Systems and methods for integrating analytics with web services on mobile devices

ABSTRACT

Embodiments of a system and method are described for generating and distributing programming to mobile devices over a network. Devices are provided with Players specific to each device and Applications that are device independent. Embodiments include a full-featured WYSIWYG authoring environment, including the ability to bind web components to objects.

TECHNICAL FIELD

The present invention generally relates to providing software for mobiledevices, and more particularly to a method and system for authoringApplications for devices.

BACKGROUND ART

Internet-connected mobile devices are becoming ever more popular. Whilethese devices provide portability to the Internet, they generally do nothave the capabilities of non-mobile devices including computing, inputand output capabilities.

In addition, the mobility of the user while using such devices provideschallenges and opportunities for the use of the Internet. Further,unlike non-mobile devices, there are a large number of types of devicesand they tend to have a shorter lifetime in the marketplace. Theprogramming of the myriad of mobile devices is a time-consuming andexpensive proposition, thus limiting the ability of service providers toupdate the capabilities of mobile devices.

Thus there is a need in the art for a method and apparatus that permitsfor the efficient programming of mobile devices. Such a method andapparatus should be easy to use and provide output for a variety ofdevices.

DISCLOSURE OF INVENTION

In certain embodiments, a system is provided to generate code to providecontent on a display of a platform. The system includes a database ofweb services obtainable over a network and an authoring tool. Theauthoring tool is configured to define an object for presentation on thedisplay, select a component of a web service included in said database,associate said object with said selected component, and produce codethat, when executed on the platform, provides said selected component onthe display of the platform.

In certain other embodiments, a method is provided for providinginformation to platforms on a network. The method includes accepting afirst code over the network, where said first code isplatform-dependent; providing a second code over the network, where saidsecond code is platform-independent; and executing said first code andsaid second code on the platform to provide web components obtained overthe network.

In certain embodiments, a method for displaying content on a platformutilizing a database of web services obtainable over a network isprovided. The method includes: defining an object for presentation onthe display; selecting a component of a web service included in saiddatabase; associating said object with said selected component; andproducing code that, when executed on the platform, provides saidselected component on the display of the platform.

In one embodiment, one of the codes is a Player, which is a thin clientarchitecture that operates in a language that manages resourcesefficiently, is extensible, supports a robust application model, and hasno device specific dependencies. In another embodiment, Player P islight weight and extends the operating system and/or virtual machine ofthe device to: Manage all applications and application upgrades, andresolve device, operating system, VM and language fragmentation.

In another embodiment, one of the codes is an Application that is adevice independent code that interpreted by the Player.

These features together with the various ancillary provisions andfeatures which will become apparent to those skilled in the art from thefollowing detailed description, are attained by the system and method ofthe present invention, preferred embodiments thereof being shown withreference to the accompanying drawings, by way of example only, wherein:

BRIEF DESCRIPTION OF DRAWINGS

FIG. 1A is an illustrative schematic of one embodiment of a systemincluding an authoring platform and a server for providing programminginstructions to a device over a network;

FIG. 1B is schematic of an alternative embodiment system for providingprogramming instructions to device over a network;

FIG. 2A is a schematic of an embodiment of system illustrating thecommunications between different system components;

FIG. 2B is a schematic of one embodiment of a device illustrating anembodiment of the programming generated by authoring platform;

FIGS. 3A and 3B illustrate one embodiment of a publisher interface as itappears, for example and without limitation, on a screen while executingan authoring tool;

FIG. 3C illustrates an embodiment of the Events Tab’

FIG. 3D illustrates one embodiment of an Animation Tab;

FIG. 3E illustrates one embodiment of Bindings Tab;

FIG. 3F illustrates one embodiment of a pop-up menu for adding webcomponents;

FIG. 4A shows a publisher interface having a layout on a canvas; andFIG. 4B shows a device having the resulting layout on a device screen;

FIG. 5 shows a display of launch strips;

FIG. 6A is a display of a Channel Selection List;

FIG. 6B is a display of a Widget Selection List;

FIG. 6C is a display of a Phone List;

FIG. 7 shows a display of a mash-up;

FIG. 8 is a schematic of an embodiment of a push capable system;

FIG. 9 is a schematic of an alternative embodiment of a push capablesystem;

FIG. 10 is a schematic of one embodiment of a feed collector;

FIG. 11 is a schematic of an embodiment of a Mobile Content Gateway;

FIG. 12 is a schematic of one embodiment of a system that includes aresponse director, a user agent database, an IP address database, and afile database; and

FIG. 13 is a schematic of another embodiment of a system that includes aresponse director, a user agent database, an IP address database, and afile database.

Reference symbols are used in the Figures to indicate certaincomponents, aspects or features shown therein, with reference symbolscommon to more than one Figure indicating like components, aspects orfeatures shown therein.

MODE(S) FOR CARRYING OUT THE INVENTION

FIG. 1A is an illustrative schematic of one embodiment of a system 100including an authoring platform 110 and a server 120 for providingprogramming instructions to a device 130 over a network N. In oneembodiment, device 130 is a wireless device, and network N includeswireless communication to the device. Alternatively, system 100 mayprovide access over network N to other information, data, or content,such as obtainable as a web service over the Internet. In general, auser of authoring platform 110 may produce programming instructions orfiles that may be transmitted over network N to operate device 130,including instructions or files that are sent to device 130 and/orserver 120. The result of the authoring process is also referred toherein, and without limitation, as publishing an Application.

Embodiments include one or more databases that store information relatedto one or more devices 130 and/or the content provided to the devices.It is understood that such databases may reside on any computer orcomputer system on network N, and that, in particular, the location isnot limited to any particular server, for example.

Device 130 may be, for example and without limitation, a cellulartelephone or a portable digital assistant, includes a network interface131, a memory 133, a processor 135, a screen 137, and an input device139. Network interface 131 is used by device 130 to communication over awireless network, such as a cellular telephone network, a WiFi networkor a WiMax network, and then to other telephones through a publicswitched telephone network (PSTN) or to a satellite, or over theInternet. Memory 133 includes programming required to operate device 130(such as an operating system or virtual machine instructions), and mayinclude portions that store information or programming instructionsobtained over network interface 131, or that are input by the user (suchas telephone numbers or images from a device camera (not shown). In oneembodiment screen 137 is a touch screen, providing the functions of thescreen and input device 139.

Authoring platform 110 includes a computer or computer system having amemory 111, a processor 113, a screen 115, and an input device 117. Itis to be understood that memory 111, processor 113, screen 115, andinput device 117 are configured such a program stored in the memory maybe executed by the processor to accept input from the input device anddisplay information on the screen. Further, the program stored in memory111 may also instruct authoring platform 110 to provide programming orinformation, as indicated by the line labeled “A” and to receiveinformation, as indicated by the line labeled “B.”

Memory 111 is shown schematically as including a stored program referredto herein, and without limitation, as an authoring tool 112. In oneembodiment, authoring tool 112 is a graphical system for designing thelayout of features as a display that is to appear on screen 137. Oneexample of authoring tool 112 is the CDER™ publishing platform (ExpressMobile, Inc., Novato, Calif.).

In another embodiment, which is not meant to limit the scope of thepresent invention, device 130 may include an operating system having aplatform that can interpret certain routines. Memory 111 may optionallyinclude programming referred to herein, and without limitation, asroutines 114 that are executable on device 130.

Routines 114 may include device-specific routines—that is, codes thatare specific to the operating system, programming language, or platformof specific devices 130, and may include, but are not limited to, Java,Windows Mobile, Brew, Symbian OS, or Open Handset Alliance (OHA).Several examples and embodiments herein are described with reference tothe use of Java. It is to be understood that the invention is not solimited, except as provided in the claims, and that one skilled in theart could provide Players for devices using routines provided on aplatform. Thus as an example, routines 114 may include Java API's and anauthoring tool System Development Kit (SDK) for specific devices 130.

Server 120 is a computer or computer system that includes a networkinterface 121, a memory 123 and a processor 125. Is to be understoodthat network interface 121, memory 123, and processor 125 are configuredsuch that a program stored in the memory may be executed by theprocessor to: accept input and/or provide output to authoring platform110; accept input and/or provide output through network interface 121over network N to network interface 131; or store information fromauthoring platform 110 or from device 130 for transmission to anotherdevice or system at a later time.

In one embodiment, authoring platform 110 permits a user to designdesired displays for screen 137 and actions of device 130. In otherwords, authoring platform 110 is used to program the operation of device130. In another embodiment, authoring platform 110 allows a user toprovide input for the design of one or more device displays and mayfurther allow the user to save the designs as device specificApplications. The Applications may be stored in memory 123 and may thenbe sent, when requested by device 130 or when the device is otherwiseaccessible, over network N, through network interface 130 for storage inmemory 133.

In an alternative embodiment, analytics information from devices 130 maybe returned from device 130, through network N and server 120, back toauthoring platform 110, as indicated by line B, for later analysis.Analytics information includes, but is not limited to, userdemographics, time of day, and location. The type of analytic content isonly limited by which listeners have been activated for which objectsand for which pages. Analytic content may include, but is not limitedto, player-side page view, player-side forms-based content, player-sideuser interactions, and player-side object status.

Content server 140 is a computer or computer system that includes anetwork interface 141, a memory 143 and a processor 145. It is to beunderstood that network interface 141, memory 143, and processor 145 areconfigured such that a stored program in the memory may be executed bythe processor to accepts requests R from device 130 and provide contentC over a network, such as web server content the Internet, to device130.

FIG. 1B is schematic of an alternative embodiment system 100 forproviding programming instructions to device 130 over a network N thatis generally similar to the system of FIG. 1A. The embodiment of FIG. 1Billustrates that system 100 may include multiple servers 120 and/ormultiple devices 130.

In the embodiment of FIG. 1B, system 100 is shown as including two ormore servers 120, shown illustratively and without limitation as servers120 a and 120 b. Thus some of the programming or information betweenauthoring platform 110 and one or more devices 130 may be stored,routed, updated, or controlled by more than one server 120. Inparticular, the systems and methods described herein may be executed onone or more server 120.

Also shown in FIG. 1B are a plurality of devices 130, shownillustratively and without limitation as device 130-1, 130-1, . . .130-N. System 100 may thus direct communication between individualserver(s) 120 and specific device(s) 130.

As described subsequently, individual devices 130 may be provided withprogram instructions which may be stored in each device's memory 133 andwhere the instructions are executed by each device's processor 135.Thus, for example, server(s) 120 may provide device(s) 130 withprogramming in response to the input of the uses of the individualdevices. Further, different devices 130 may be operable using differentsets of instructions, that is having one of a variety of different“device platforms.” Differing device platforms may result, for exampleand without limitation, to different operating systems, differentversions of an operating system, or different versions of virtualmachines on the same operating system. In some embodiments, devices 130are provided with some programming from authoring system 100 that isparticular to the device.

In one embodiment, system 100 provides permits a user of authoringplatform 110 to provide instructions to each of the plurality of devices130 in the form of a device- or device-platform specific instructionsfor processor 135 of the device, referred to herein and withoutlimitation as a “Player,” and a device-independent program, referred toherein and without limitation as an “Application” Thus, for example,authoring platform 110 may be used to generate programming for aplurality of devices 130 having one of several different deviceplatforms. The programming is parsed into instructions used by differentdevice platforms and instructions that are independent of deviceplatform. Thus in one embodiment, device 130 utilizes a Player and anApplication to execute programming from authoring platform 110. A devicehaving the correct Player is then able to interpret and be programmedaccording to the Application.

In one alternative embodiment, the Player is executed the first time bydevice 130 (“activated”) through an Application directory. In anotheralternative embodiment, the Player is activated by a web browser orother software on device 130. In yet another alternative embodiment,Player is activated through a signal to device 130 by a specialtelephone numbers, such as a short code.

When the Application and the Player are provided to memory 133, thefunctioning of device 130 may occur in accordance with the desiredprogramming. Thus in one embodiment, the Application and Player includesprogramming instructions which may be stored in memory 133 and which,when executed by processor 135, generate the designed displays on screen137. The Application and Player may also include programminginstructions which may be stored in memory 133 and which provideinstructions to processor 135 to accept input from input device 139.

Authoring tool 112 may, for example, produce and store within memory 111a plurality of Players (for different devices 130) and a plurality ofApplications for displaying pages on all devices. The Players andApplications are then stored on one or more servers 120 and thenprovided to individual devices 130. In general, Applications areprovided to device 130 for each page of display or a some number ofpages. A Player need be provided once or updated as necessary, and thusmay be used to display a large number of Applications. This isadvantageous for the authoring process, since all of thedevice-dependent programming is provided to a device only once (orpossibly for some small number of upgrades), permitting a smallerApplication, which is the same for each device 130.

Thus, for example and without limitation, in one embodiment, the Playertransforms device-independent instructions of the Application intodevice-specific instructions that are executable by device 130. Thus, byway of example and without limitation, the Application may include Javaprogramming for generating a display on screen 137, and the Player mayinterpret the Java and instruct processor 135 to produce the displayaccording to the Application for execution on a specific device 130according to the device platform. The Application may in generalinclude, without limitation, instructions for generating a display onscreen 137, instructions for accepting input from input device 139,instructions for interacting with a user of device 130, and/orinstructions for otherwise operating the device, such as to place atelephone call.

The Application is preferably code in a device-independent format,referred to herein and without limitation as a Portable DescriptionLanguage (PDL). The device's Player interprets or executes theApplication to generate one or more “pages” (“Applications Pages”) on adisplay as defined by the PDL. The Player may include code that isdevice-specific—that it, each device is provided with a Player that isused in the interpretation and execution of Applications. Authoring tool112 may thus be used to design one or more device-independentApplications and may also include information on one or more differentdevices 130 that can be used to generate a Player that specific devicesmay use to generate displays from the Application.

In one embodiment, system 100 provides Players and Applications to oneserver 120, as in FIG. 1A. In another embodiment, system 100 providesPlayers to a first server 120 a and Applications to a second server 120b, as in FIG. 1B.

In one embodiment, authoring tool 112 may be used to program a pluralityof different devices 130, and routines 114 may include device-specificroutines. In another embodiment, the Player is of the type that iscommonly referred to as a “thin client”—that is, software for running onthe device as a client in client-server architecture with a devicenetwork which depends primarily on a central server for processingactivities, and mainly focuses on conveying input and output between theuser and the server.

In one embodiment, authoring platform 110 allows user to arrange objectsfor display on screen. A graphical user interface (“GUI,” or “UI”) isparticularly well suited to arranging objects, but is not necessary. Theobjects may correspond to one or more of an input object, an outputobject, an action object, or may be a decorative display, such as alogo, or background color or pattern, such as a solid or gradient fill.In another embodiment, authoring platform 110 also permits a user toassign actions to one or more of an input object, an output object, oran action object. In yet another embodiment, authoring platform 110 alsopermits a user to bind one or more of an input object, an output object,or an action object with web services or web components, or permits auser to provide instructions to processor 135 to store or modifyinformation in memory 133, to navigate to another display or service, orto perform other actions, such as dialing a telephone number.

In certain embodiments, the applicant model used in developing andproviding Applications is a PDL. The PDL can be conceptually viewed as adevice, operating system and virtual machine agnostic representation ofJava serialized objects. In certain embodiments, the PDL is the commonlanguage for authoring tool 112, the Application, and Player. Thus whileeither designing the Application with the authoring tool 112, orprogramming with the SDK, the internal representation of the programminglogic is in Java. In one embodiment the SDK is used within amulti-language software development platform comprising an IDE and aplug-in system to extend it, such as the Eclipse Integrated DevelopmentEnvironment (see, for example, http://www.eclipse.org/). At publish timethe Java code is translated into a PDL. This translation may also occurin real-time during the execution of any Web Services or backendbusiness logic that interacts with the user.

One embodiment for compacting data that may be used is described inco-pending U.S. Pat. No. 6,546,397 to Rempell (“Rempell”), the contentsof which are incorporated herein by reference. In that patent thecompressed data is described as being a database. The terminology usedhere is a PDL, that is the “internal database” of Rempell is equivalentto the PDL of the present Application.

The use of a PDL, as described in Rempell, permits for efficient codeand data compaction. Code, as well as vector, integer and Boolean datamay be compacted and then compressed resulting in a size reduction of 40to 80 times that of the original Java serialized objects. This isimportant not only for performance over the network but for utilizingthe virtual memory manager of the Player more efficiently. As anexample, the reassembled primitives of the Java objects may firstundergo logical compression, followed by LZ encoding.

The use of a PDL also provides virtual machine and operating systemindependence. Since the reassembled primitives of the Application nolonger have any dependencies from the original programming language(Java) that they were defined in. The PDL architecture takes fulladvantage of this by abstracting all the virtual machine and/oroperating system interfaces from the code that processes the PDL.

In one embodiment, the PDL is defined by the means of nested arrays ofprimitives. Accordingly, the use of a PDL provides extensibility andcompatibility, with a minimal amount of constraints in extending thePlayer seamlessly as market demands and device capabilities continue togrow. Compatibility with other languages is inherent based on thevarious Player abstraction implementations, which may be, for exampleand without limitation, Java CDC, J2SE or MIDP2 implementations.

In one embodiment, the architecture of Player P includes an abstractioninterface that separates all device, operating system and virtualmachine dependencies from the Player's Application model business logic(that is, the logic of the server-side facilities) that extend theApplication on the Player so that it is efficiently integrated into acomprehensive client/server Application. The use of an abstractioninterface permits the more efficient porting to other operating systemsand virtual machines and adding of extensions to the Application modelso that a PDL can be implemented once and then seamlessly propagatedacross all platform implementations. The Application model includes allthe currently supported UI objects and their attributes and well as allof the various events that are supported in the default Player. Further,less robust platforms can be augmented by extending higher endcapabilities inside that platform's abstraction interfaceimplementation.

In one embodiment, authoring platform 110 provides one or more pages,which may be provided in one Application, or a plurality ofApplications, which are stored in memory 123 and subsequently providedto memory 133. In certain embodiments, the Application includesinstructions R to request content or web services C from content server140. Thus, for example and without limitation, the request is forinformation over the network via a web service, and the request R isresponded to with the appropriate information for display on device 130.Thus, for example, a user may request a news report. The Application mayinclude the layout of the display, including a space for the news, whichis downloaded form content server 140 for inclusion on the display.Other information that may be provided by content server 140 mayinclude, but is not limited to, pages, Applications, multimedia, andaudio.

FIG. 2A is a schematic of a system 200 of an embodiment of system 100illustrating the communications between different system components.System includes a response director 210, a web component registry 220,and a web service 230. System 200 further includes authoring platform110, server 120, device 130 and content server 140 are which aregenerally similar to those of the embodiments of FIGS. 1A and 1B, exceptas explicitly noted.

Response director 210 is a computer or computer system that may begenerally similar to server 120 including the ability to communicatewith authoring platform 110 and one or more devices 130. In particular,authoring platform 110 generates one or more Players (each usable bycertain devices 130) which are provided to response director 210.Devices 130 may be operated to provide response director 210 with arequest for a Player and to receive and install the Player. In oneembodiment, device 130 provides response director 210 withdevice-specific information including but not limited to make, model,and/or software version of the device. Response director 210 thendetermines the appropriate Player for the device, and provides thedevice with the Player over the network.

Web service 230 is a plurality of services obtainable over the Internet.Each web service is identified and/or defined as an entry in webcomponent registry 230, which is a database, XML file, or PDL thatexists on a computer that may be a server previously described oranother server 120. Web component registry 230 is provided throughserver 120 to authoring platform 110 so that a user of the authoringplatform may bind web services 230 to elements to be displayed on device130, as described subsequently.

In one embodiment, authoring platform 110 is used in conjunction with adisplay that provides a WYSIWYG environment in which a user of theauthoring platform can produce an Application and Player that producesthe same display and the desired programming on device 130. Thus, forexample, authoring tool 112 provides a display on screen 115 thatcorresponds to the finished page that will be displayed on screen 137when an Application is intercepted, via a Player, on processor 135 ofdevice 130.

Authoring platform 110 further permits a user of the authoring platformto associate objects, such as objects for presenting on screen 137, withcomponents of one or more web services 230 that are registered in webcomponent registry 220. In one embodiment, information is provided in anXML file to web component registry 220 for each registered components ofeach web service 230. Web component registry 220 may contain consumerinputs related to each web service 230, environmental data such as PIM,time or location values, persistent variable data, outputs related tothe web service, and/or optional hinting for improving the user'sproductivity.

A user of authoring platform 110 of system 200 may define associationswith web services as WebComponent Bindings. In one embodiment, authoringplatform 110 allows a user to associate certain objects for display thatprovide input or output to components of web service 230. The associatedbindings are saved as a PDL in server 120.

In one embodiment, an XML web component registry 220 for each registeredweb service 230 is loaded into authoring platform 110. The user ofsystem 200 can then assign components of any web service 230 to anApplication without any need to write code. In one embodiment, acomponent of web service 230 is selected from authoring platform 110which presents the user with WYSIWYG dialog boxes that enable thebinding of all the inputs and outputs of component of web service 230 toa GUI component of the Application as will be displayed on screen 137.In addition, multiple components of one or more web service 230 can beassigned to any Object or Event in order to facilitate mashups. TheseObject and/or Event bindings, for each instance of a component of anyweb service 230, are stored in the PDL. The content server 140 handlesall communication between device 130 and the web service 230 and can beautomatically deployed as a web application archive to any contentserver.

Device 130, upon detecting an event in which a component of a webservice 230 has been defined, assembles and sends all related inputs tocontent server 240, which proxies the request to web service 230 andreturns the requested information to device 130. The Player on device130 then takes the outputs of web service 230 and binds the data to theUI components in the Application, as displayed on screen 137.

In one embodiment, the mechanism for binding the outputs of the webservice to the UI components is through symbolic references that matcheseach output to the symbolic name of the UI component. The outputs, inone embodiment, may include meta-data which could become part of theinputs for subsequent interactions with the web service.

For example, if a user of authoring platform 110 wants to present anATOM feed on device 130, they would search through a list of UIComponents available in the authoring platform, select the feed theywant to use, and bind the output of the feed summary to a textbox. Thebindings would be saved into the PDL on server 120 and processed bydevice 130 at runtime. If the ATOM feed does not exist a new one can beadded to the web component registry that contains all the configurationdata required, such as the actual feed URL, the web component managerURL, and what output fields are available for binding.

In another embodiment, components of web services 230 are availableeither to the user of authoring platform 110 or otherwise accessiblethrough the SDK and Java APIs of routines 114. System 200 permits anexpanding set of components of web services 230 including, but notlimited to: server pages from content server 120; third-party webservices including, but not limited to: searching (such through Googleor Yahoo), maps (such as through MapQuest and Yahoo), storefronts (suchas through ThumbPlay), SMS share (such as through clickatel), stockquotes, social networking (such as through FaceBook), stock quotes,weather (such as through Accuweather) and/or movie trailers. Othercomponents include web services for communication and sharing throughchats and forums and rich messaging alerts, where message alerts areset-up that in turn could have components of Web Services 230 definedwithin them, including the capture of consumer generated and Web Servicesupplied rich media and textual content.

System 200 also permits dynamic binding of real-time content, where theinputs and outputs of XML web services are bound to GUI componentsprovided on screen 137. Thus, for example, a user of authoring platform110 may bind attributes of UI Objects to a particular data base field ona Server. When running the Application, the current value in thereferenced data base will be immediately applied. During the Applicationsession, any other real time changes to these values in the referenceddata base will again be immediately displayed.

As an example of dynamic binding of real-time content, an RSS feeds andother forms of dynamic content may be inserted into mobile Applications,such as device 130, using system 200. Authoring platform 110 may includea “RSS display” list which permits a user to select RSS channels andfeeds from an extensible list of available dynamic content. Meta data,such as titles, abstracts and Images can be revealed immediately by theuser as they traverse this RSS display list, bringing the PC experiencecompletely and conveniently to mobile devices 130. In addition,Authoring platform 110 may include a dialog box that dynamically linksobjects to data and feeds determined by RSS and chat databases. Anyrelevant attribute for a page view and/or object can be dynamicallybound to a value in a server-side database. This includes elementswithin complex objects such as: any icon or text element within agraphical list; any icon within a launch strip; any feature within anygeographical view of a GIS service object; and/or any virtual roomwithin a virtual tour.

As an example of third-party web services 230 that may be provided usingsystem 200, a user of authoring platform 110 can place, for example,Yahoo maps into device 130 by binding the required component of theYahoo Maps Web Service, such as Yahoo Map's Inputs and/or Outputs toappropriate Objects of authoring platform 110. System 200 also providesbinding to web services for text, image and video searching by bindingto components of those web services.

In one embodiment, an Application for displaying on device 130 includesone or more Applications Pages, each referred to herein as an “XSP,”that provides functionality that extends beyond traditional webbrowsers. The XSP is defined as a PDL, in a similar manner as anyApplication, although it defines a single page view, and is downloadedto the Player dynamically as required by the PDL definition of theApplication. Thus, for example, while JSPs and ASPs, are restricted tothe functionality supported by the web browser, the functionality ofXSPs can be extended through authoring platform 110 having access toplatform dependent routines 114, such as Java APIs. Combined withdynamic binding functionality, an XSP, a page can be saved as a pageobject in an author's “pages” library, and then can be dynamicallypopulated with real-time content simultaneously as the page isdownloaded to a given handset Player based on a newly expanded API. XSPServer Pages can also be produced programmatically, but in most casesauthoring platform 110 will be a much more efficient way to generate andmaintain libraries of dynamically changing XSPs.

With XSPs, Applications Pages that have dynamic content associated withthem can be sent directly to device 130, much like how a web browserdownloads an HTML page through a external reference. Without XSPs,content authors would have to define each page in the Application. WithXSPs, no pages need to be defined. Thus, for example, in a World CupApplication, one page could represent real-time scores that changecontinuously on demand. With polling (for example, a prompt to the usersasking who they predict will win a game), a back-end database wouldtabulate the information and then send the results dynamically to thehandsets. With a bar chart, the Application would use dynamic PDL withscaling on the fly. For example, the server would recalibrate the barchart for every ten numbers.

Other combinations of components of web services 230 include, but arenot limited to, simultaneous video chat sessions, inside an integratedpage view, with a video or television station; multiple simultaneouschat sessions, each with a designated individual and/or group, with eachof the chat threads visible inside an integrated page view.

Another extension of an XSP is a widget object. Widgets can be developedfrom numerous sources including, but not limited to, authoring platform110, a Consumer Publishing Tool, and an XML to Widget Conversion Toolwhere the SDK Widget Libraries are automatically populated and managed,or Widget Selection Lists that are available and can be populated withauthor defined Icons.

Applications, Players, and Processing in a Device

FIG. 2B is a schematic of one embodiment of a device 130 illustrating anembodiment of the programming generated by authoring platform 110.Memory 133 may include several different logical portions, such as aheap 133 a, a record store 133 b and a filesystem (not shown).

As shown in FIG. 2B, heap 133 a and record store 133 b includeprogramming and/or content. In general, heap 133 a is readily accessibleby processor 135 and includes, but is not limited to portions thatinclude the following programming: a portion 133 a 1 for virtual machinecompliant objects representing a single Page View for screen 137; aportion 133 a 2 for a Player; a portion 133 a 3 for a virtual machine;and a portion 133 a 4 for an operating system.

Record store 133 b (or alternatively the filesystem) includes, but isnot limited to, portions 133 b 1 for Applications and non-streamingcontent, which may include portions 133 a 2 for images, portions 133 a 4for audio, and/or portions 133 a 5 for video, and portions 133 b 2 fornon-Application PDLs, such as a Master Page PDL for presenting repeatingobjects, and Alerts, which are overlayed on the current page view. Othercontent, such as streaming content may be provided from networkinterface 131 directly to the Media Codec of device 130 withinstructions from Player on how to present the audio or video.

In one embodiment, the Player includes a Threading Model and a VirtualMemory Manager. The Threading Model first manages a queue of actionsthat can be populated based on Input/Output events, Server-side events,time-based events, or events initiated by user interactions. TheThreading Model further manages the simultaneous execution of actionsoccurring at the same time. The Virtual Memory Manager includes aLogical Virtual Page controller that provides instructions from therecord store to the heap, one page at time. Specifically, the VirtualMemory Manager controls the transfer of one of the Application Pages andits virtual machine compliant objects into portion 133 a 1 asinstructions readable by the Player or Virtual Machine. When the Playerdetermines that a new set of instructions is required, the information(such as one Application Page is retrieve from the Record store,converted into virtual machine compliant objects (by processor 135 andaccording to operation by the Player, Virtual Machine, etc), and storedin heap 133 a. Alternatively, the Player may augment virtual machinecompliant objects with its own libraries for managing user interactions,events, memory, etc.

The connection of portions 133 a 1, 133 a 2, 133 a 3, 133 a 4, recordstore 133 b and processor 135 are illustrative of the logical connectionbetween the different types of programming stored in Heap 133 a andrecord store 133 b, that is, how data is processed by processor 135.

The Player determines which of the plurality of Application Pages inportion 133 b 1 is required next. This may be determined by inputactions from the Input Device 139, or from instructions from the currentApplication Page. The Player instructs processor 135 to extract the PDFfrom that Applications Page and store it in portion 133 a 1. The Playerthen interprets the Application Page extracted from PDL which in turndefines all of the virtual machine compliant Objects, some of whichcould have attributes that refer to images, audio, and/or video storedin portions 133 a 3, 133 a 4, 133 a 5, respectively.

The Virtual Machine in portion 133 a 3 processes the Player output, theOperating System in portion 133 a 3 processes the Virtual Machine outputwhich results in machine code that is processed by the Operating Systemin portion 133 a 4.

In another embodiment, the Player is a native program that interactsdirectly with the operating system.

Embodiments of a Publishing Environment

In one embodiment, authoring platform 110 includes a full-featuredauthoring tool 112 that provides a what-you-see-is-what-you-get(WYSIWYG) full featured editor. Thus, for example, authoring tool 112permits a user to design an Application by placing objects on canvas 305and optionally assigning actions to the objects and save theApplication. System 100 then provides the Application and Player to adevice 130. The Application as it runs on device 130 has the same lookand operation as designed on authoring platform 110. In certainembodiments, authoring platform 110 is, for example and withoutlimitation, a PC-compatible or a Macintosh computer.

Authoring platform 110 produces an Application having one or moreApplications Pages, which are similar to web pages. That is, eachApplications Page, when executed on device 130 may, according to itscontents, modify what is displayed on screen 137 or cause programming onthe device to change in a manner similar to how web pages are displayedand navigated through on a website.

In one embodiment, authoring tool 112 allows a user to place one or moreobjects on canvas 305 and associate the objects with an ApplicationsPages. Authoring platform 110 maintains a database of object data inmemory 111, including but not limited to type of object, location onwhich page, and object attributes. The user may add settings, events,animations or binding to the object, from authoring tool 112, which arealso maintained in memory 111. Authoring tool 112 also allows a user todefine more than one Applications Page.

In another embodiment, authoring tool 112, provides Java programmingfunctions of the Java API for specific devices 130 as pull-down menus,dialog boxes, or buttons. This permits a user of authoring platform 110to position objects that, after being provided as an Application todevice 130, activate such Java functions on the device.

In certain embodiments, authoring platform 110, as part of system 100,permits designers to include features of advanced web and web servicesApplications for access by users of device 130. Some of the features ofadvanced web and web services include, but are not limited to: slideshows, images, video, audio, animated transitions, multiple chats, andmouse interaction; full 2-D vector graphics; GIS (advanced LBS),including multiple raster and vector layers, feature sensitiveinteractions, location awareness, streaming and embedded audio/video,virtual tours, image processing and enhancement, and widgets. In otherembodiments the features are provided for selection in authoringplatform 110 through interactive object libraries.

In certain embodiments, authoring platform 110, as part of system 100,allows the inclusion of child objects which may eventually be activatedon device 130 by the user of the device or by time. The uses of thechild objects on device 130 include, but are not limited to: mouse over(object selection), hover and fire events and launching ofobject-specific, rich-media experiences.

In certain other embodiments, authoring platform 110, as part of system100, provides advanced interactive event models on device 130, includingbut not limited to: user-, time- and/or location-initiated events, whichallow content developers to base interactivity on specific userinteractions and/or instances in time and space; timelines, which arecritical for timing of multiple events and for animations when entering,on, or exiting pages of the Application; waypoints, which act similar tokey frames, to allow smooth movement of objects within pages of theApplication. Waypoints define positions on a page object's animationtrajectory. When an object reaches a specific waypoint other objecttimelines can be initiated, creating location-sensitive multiple objectinteraction, and/or audio can be defined to play until the objectreaches the next waypoint.

Authoring platform 110 may also define a Master Page, which acts as atemplate for an Applications Page, and may also define Alert Pages,which provide user alerts to a user of device 130.

In certain embodiments, authoring platform 110, as part of system 100,provides full style inheritance on device 130. Thus, for example andwithout limitation, both master page inheritance (for structural layoutinheritance and repeating objects) and object styles (for both look andfeel attribute inheritance) are supported. After a style has beendefined for an object, the object will inherit the style. Styleattributes include both the look and the feel of an object, includingmouse interaction, animations, and timelines. Each page may includeobjects that may be a parent object or a child object. A child object isone that was created by first selecting a parent object, and thencreating a child object. Child objects are always part of the samedrawing layer as its parent object, but are drawn first, and are notdirectly selectable when running the Application. A parent object is anyobject that is not a child object, and can be selected when running theApplication.

As an example, the user of authoring tool 112 may create various textobjects on canvas 305 using a style that sets the font to red, the fontsof these objects will be red. Suppose user of authoring tool 112 changesthe font color of a specific button to green. If later, the user ofauthoring tool 112 changes the style to blue; all other text objectsthat were created with that style will become blue except for the buttonthat had been specifically set to green.

In certain other embodiments, authoring platform 110 provides page view,style, object, widget and Application template libraries. Authoringplatform 110 may provide templates in private libraries (available tocertain users of the authoring platform) and public libraries (availableto all users of the authoring platform). Templates may be used to withinauthoring platform 110 to define the look and feel of the entireApplication, specific pages, or specific slide shows and virtual tours aseen on device 130.

FIGS. 3A and 3B illustrate one embodiment of a publisher interface 300as it appears, for example and without limitation, on screen 115 whileexecuting authoring tool 112. In one embodiment, publisher interface 300includes a Menu bar 301, a Tool bar 303, a Canvas 305, a Layer Inspector307 having subcomponents of a page/object panel 307 a, an object stylepanel 307 b, and a page alert panel 307 c, and a Resource Inspector 309.

In general, publisher interface 300 permits a user of authoring platform110 to place objects on canvas 305 and then associate properties and/oractions to the object, which are stored in the Application. As describedsubsequently, publisher interface 300 permits a user to program agraphical interface for the screen 137 of device 130 on screen 115 ofauthoring platform 110, save an Application having the programminginstructions, and save a Player for the device. The intended programmingis carried out on device 130 when the device, having the appropriatedevice platform Player, receives and executes the device-independentApplication.

Thus, for example, authoring tool 112 maintains, in memory 111, a listof every type of object and any properties, actions, events, or bindingsthat may be assigned to that object. As objects are selected for anApplication, authoring tool 112 further maintains, in memory 111, alisting of the objects. As the user selects objects, publisher interface300 provides the user with a choice of further defining properties,actions, events, or bindings that may be assigned to each particularobject, and continues to store the information in memory 111.

In one embodiment, publisher interface 300 is a graphical interface thatpermits the placement and association of objects in a manner typical of,for example, vector graphics editing programs (such as AdobeIllustrator). Objects located on canvas 305 placed and manipulated bythe various commands within publisher interface 300 or inputs such as aninput device 117 which may be a keyboard or mouse. As described herein,the contents of canvas 305 may be saved as an Application that, throughsystem 100, provide the same or a similar placement of objects on screen137 and have actions defined within publisher interface 300. Objectsplaced on canvas 305 are intended for interaction with user of device130 and are referred to herein, without limitation, as objects or UI(user interface) objects. In addition, the user of interface 300 mayassign or associate actions or web bindings to UI objects placed oncanvas 305 with result in the programming device 130 that cause it torespond accordingly.

Objects include, but are not limited to input UI objects, response UIobjects. Input UI objects include but are not limited to: text fields(including but not limited to alpha, numeric, phone number, or SMSnumber); text areas; choice objects (including but not limited toreturning the selected visible string or returning a numeric hiddenattribute); single item selection lists (including but not limited toreturning the selected visible string or returning a numeric hiddenattribute); multi item selection lists (including but not limited toreturning all selected items (visible text string or hidden attribute)or cluster item selection lists (returning the hidden attributes for allitems).

Other input UI objects include but are not limited to: check boxes;slide show (including but not limited to returning a numeric hiddenattribute, returning a string hidden attribute, or returning the hiddenattributes for all slides); and submit function (which can be assignedto any object including submit buttons, vectors, etc.).

Response UI Objects may include, but are not limited to: single linetext objects, which include: a text Field (including but not limited toa URL, audio URL, or purchase URL), a text button, a submit button, or aclear button. Another response UI objects include: a multiple line textobject, which may include a text area or a paragraph; a check box; animage; a video; a slide show (with either video or image slides, orboth); choice objects; list objects; or control lists, which control allthe subordinate output UI objects for that web component. Control listobjects include, but are not limited to: list type or a choice type,each of which may include a search response list or RSS display list.

As a further example of objects that may be used with authoring tool112, Table I lists Data Types, Preferred Input, Input Candidates,Preferred Output and Output Candidates for one embodiment of anauthoring tool.

TABLE I One embodiment of supported objects Data Types Preferred InputInput Candidates Preferred Output Output Candidates boolean Check BoxCheck Box Check Box Check Box Int Text Field (integer) Text Field(integer) Text Field (integer) Text Field (integer) Text Field (Phone #)Text Field (Phone #) Text Field (SMS #) Text Field (SMS #) Choice ChoiceList (single select) List (single select) Text Button String Text Field(Alpha) Any Text Field (Alpha) Any multilineString Text Area Text AreaText Area Text Area Paragraph ImageURL N/A N/A Image Image Slide ShowVideoURL N/A N/A Video Video Slide Show List Single Item List SingleItem List Single Item List Any List Type Multi-Select List Any ChoiceType Complex List (see Complex Choice List Specification) Slide ShowComplexList Complex List Single Item List Single Item List Any List TypeMulti-Select List (see Complex List Complex List Specification)Slideshow Slide Show Slide Show Slide Show Slide Show SearchResponseListN/A N/A Search Response List Search Response List Control List ComplexList Choice RSSList N/A N/A RSS Display List RSS Display List ControlList Complex List Choice SingleSelectionList Choice Choice Choice ChoiceComplex List Complex List MultiSelectionList Multi-Selection ListMulti-Selection List Multi-Selection List Multi-Selection ListServiceActivation Submit Button Any N/A N/A ChannelImageURL N/A N/AImage Image Video Slide Show ChannelDescription N/A N/A Text Area TextArea Paragraph Text Field Text Button List Choice ChannelTitle N/A N/AText Field Text Field Text Button Paragraph Text Area List Choice URLText Field Text Field (URL request) (URL request) Audio URL Text FieldText Field (Audio URL request) (Audio URL request) Purchase URL TextField Text Field (Purchase URL request) (Purchase URL request) ImageData Image Image Slide Show Image List Data Slide Show Slide Show ImagePersistent Variable N/A N/A N/A N/A Pipeline Multiple SelectMulti-select List Multi-select List N/A N/A Complex List Slide ShowPhone Number Text Field Text Field Text Field Text Field (numeric type)Text Button (numeric type) Text Button Hidden Attribute Complex ListComplex List Complex List Complex List Slide Show Slide Show CollectionList N/A N/A Slide Show Complex List Slide Show

In general, publisher interface 300 permits a user to define anApplication as one or more Applications Pages, select UI objects fromMenu bar 301 or Tool bar 303 and arrange them on an Applications Page byplacing the objects canvas 305. An Application Page is a page that isavailable to be visited through any navigation event. Application Pagesinherit all the attributes of the Master Page, unless that attribute isspecifically changed during an editing session.

Authoring platform 110 also stores information for each UI object oneach Application Page of an Application. Layer Inspector 307 provideslists of Applications Pages, UI objects on each Applications Page, andStyles, including templates. Objects may be selected from canvas 305 orLayer Inspector 307 causing Resource Inspector 309 to provide lists ofvarious UI objects attributes which may be selected from within theResource Inspector. Publisher interface 300 also permits a user to savetheir work as an Application for layer transfer and operation of device130. Publisher interface 300 thus provides an integrated platform fordesigning the look and operation of device 130.

The information stored for each UI object depends, in part, on actionswhich occur as the result of a user of device 130 selecting the UIobject from the device. UI objects include, but are not limited to:navigational objects, such as widget or channel launch strips orselection lists; message objects for communicating, such as a multiplechat, video chat, phone and/or SMS lists or fields or a pop-up alert;text fields or areas; check boxes; pull down menus; selection lists andbuttons; pictures; slide shows; video or LBS maps; shapes or textdefined by a variety of tools; a search response; or an RSS display.

In certain embodiments, publisher interface 300 permits a user to assignaction to UI objects, including but not limited to, programming of thedevice 130 or a request for information over network N. In oneembodiment, for example and without limitation, publisher interface 300has a selection to bind a UI object to a web service—that is, associatethe UI object or a manipulation or selection of UI object with webservices. Publisher interface 300 may also include many drawing and textinput functions for generating displays that may be, in some ways,similar to drawing and/or word processing programs, as well as toolbarsand for zooming and scrolling of a workspace.

Each UI object has some form, color, and display location associate withit. Further, for example and without limitation, UI objects may havenavigational actions (such as return to home page), communicationsactions (such as to call the number in a phone number field), or webservices (such as to provide and/or retrieve certain information from aweb service). Each of the these actions requires authoring platform 110to store the appropriate information for each action. In addition, UIobjects may have associated patent or child objects, default settings,attributes (such as being a password or a phone number), whether a fieldis editable, animation of the object, all of which may be stored byauthoring platform 110, as appropriate.

Menu bar 301 provides access features of publisher interface 300 througha series of pull-down menus that may include, but are not limited to,the following pull-down menus: a File menu 301 a, an Edit menu 301 b, aView menu 301 c, a Project menu 301 d, an Objects menu 301 e, an Eventsmenu 301 f, a Pages menu 301 g, a Styles menu 301 h, and a Help menu 301i.

File menu 301 a provides access to files on authoring platform 110 andmay include, for example and without limitation, selections to open anew Application or master page, open a saved Application, Applicationtemplate, or style template, import a page, alert, or widget, openlibrary objects including but not limited to an image, video, slideshow, vector or list, and copying an Application to a user or to Server120.

Edit menu 301 b may include, but is not limited to, selections forselect, cut, copy, paste, and edit functions.

View menu 301 c may include, but is not limited to, selections forzooming in and out, previewing, canvas 305 grid display, and variouspalette display selections.

Project menu 301 d may include, but is not limited to, selectionsrelated to the Application and Player, such as selections that require alog in, generate a universal Player, generate server pages, activateserver APIs and extend Player APIs. A Universal Player will include allthe code libraries for the Player, including those that are notreferenced by the current Application. Server APIs and Player APIslogically extend the Player with Server-side or device-side Applicationspecific logic.

Objects menu 301 e includes selections for placing various objects oncanvas 305 including, but not limited to: navigation UI objects,including but not limited to widget or channel launch strips orselection lists; message-related UI objects, including but not limitedto multiple chat, video chat, phone and/or SMS lists or fields, or apop-up alert; shapes, which provides for drawing tools; forms-relatedobjects, including but not limited to text fields; scrolling text box,check box, drop-down menu, list menu, submit button or clear button;media-related UI objects such as pictures, slide shows, video or LBSmaps; text-related UI objects such as buttons or paragraphs; andvariables, including but not limited to time, date and audio mutecontrol.

Events menu 301 f includes selections for defining child objects, mouseevents, animations or timelines.

Pages menu 301 g includes selection for handling multi-pageApplications, and may include selections to set a master page, delete,copy, add or go to Applications Pages.

Styles menu 301 h includes selections to handle styles, which are theunderlying set of default appearance attributes or behaviors that defineany object that is attached to a style. Styles are a convenient way forquickly creating complex objects, and for changing a whole collection ofobjects by just modifying their common style. Selections of Styles menu301 h include, but not limited to, define, import, or modify a style, orapply a template. Help menu 301 i includes access a variety of helptopics.

Tool bar 303 provides more direct access to some of the features ofpublisher interface 300 through a series of pull-down menus. Selectionsunder tool bar 303 may include selections to:

-   -   control the look of publisher interface 300, such as a Panel        selection to control the for hiding or viewing various panels on        publisher interface 300;

control the layout being designed, such as an Insert Page selection topermit a user to insert and name pages;

control the functionality of publisher interface 300, such as a Palettesselection to choose from a variety of specialized palettes, such as aView Palette for zooming and controlling the display of canvas 305, aCommand Palette of common commands, and Color and Shape Palettes;

place objects on canvas 305, which may include selections such as: aNavigation selection to place navigational objects, such as widget orchannel launch strips or selection lists), a Messages selection to placeobjects for communicating, such as a multiple chat, video chat, phoneand/or SMS lists or fields, or a pop-up alert, a Forms selection toplace objects such as text fields or areas, check boxes, pull downmenus, selection lists, and buttons, a Media selection to placepictures, slide shows, video or LBS maps, and a Shapes selection havinga variety of drawing tools, a Text selection for placing text, a searchresponse, or an RSS display, and Palettes.

In one embodiment, Tool bar 303 includes a series of pull-down menusthat may include, but are not limited to, items from Menu bar 301organized in the following pull-down menus: a Panel menu 303 a, anInsert Page menu 303 b, a Navigation menu 303 c, a Messages menu 303 d,a Forms menu 303 e, a Media menu 303 f, a Shapes menu 303 g, a Text menu303 h, and a Palettes menu 301 i.

Panel menu 303 a permits a user of authoring platform 110 to change theappearance of interface 300 by, controlling which tools are on theinterface or the size of canvas 305. Insert Page menu 303 b permits auser of authoring platform 110 to open a new Application Page.Navigation menu 303 c displays a drop down menu of navigational-relatedobjects such as a widget or channel launch strip or selection list.Messages menu 303 d displays a drop down menu of messaging-relatedobjects such as multiple chat, video chat, phone or SMS lists or fields,and pop-up alerts. Forms menu 303 e displays a drop down menu offorms-related objects including, but not limited to, a text field, atext area, a check box, a drop down menu, a selection list, a submitbutton, and a clear button. Media menu 303 f displays a drop down menuof media-related objects including, but not limited to, a picture, slideshow, video or LBS map. Shapes menu 303 g displays a drop down menu ofdraw tools, basic shapes, different types of lines and arrows and accessto a shape library. Text menu 303 j displays a drop down menu oftext-related objects, including but not limited to a text button,paragraph, search response, RSS display and variables such as time anddate.

Palettes menu 301 i includes a selection of different palettes that canbe moved about publisher interface 300, where each palette hasspecialized commands for making adjustments or associations to objectseasier. Palettes include, but are not limited to: a page view palette,to permit easy movement between Applications Pages; a view palette, toexecute an Application or zoom or otherwise control the viewing of anApplication; a commands palette having editing commands; a color palettefor selection of object colors; and a shapes palette to facilitatedrawing objects.

Layer inspector 307 permits a user of publisher interface 300 tonavigate, select and manipulate UI objects on Applications Pages. Thus,for example, a Page/objects panel 307 a of layer inspector 307 has alisting that may be selected to choose an Applications Pages within andApplication, and UI objects and styles within an Applications Page. AnObject styles panel 307 b of layer inspector 307 displays all styles onthe Applications Page and permits selection of UI objects for operationsto be performed on the objects.

Thus, for example, when objects from Menu bar 301 or Tool bar 303 areplaced on canvas 305, the name of the object appears in Page/objectspanel 307 a. Page/objects panel 307 a includes a page display 307 a 1and an objects display 307 a 2. Page display 307 a 1 includes a pulldown menu listing all Applications Pages of the Application, and objectsdisplay 307 a 2 includes a list of all objects in the Applications Page(that is, objects on canvas 305).

In general, page/objects panel 307 a displays various associations witha UI object and permits various manipulations including, but not limitedto, operations for parent and child objects that are assigned to a page,and operations for object styles, and permits navigating between pagetypes and object styles, such as switching between the master page andApplication pages and deselecting object styles and alerts, opening anEdit Styles Dialog Box and deselecting any master, Application or alertpage, or selecting an alert page and deselecting any Master Page orApplication Page. A parent or child object can also be selected directlyfrom the Canvas. In either case, the Resource Inspector can then be usedfor modifying any attribute of the selected object.

Examples of operations provided by page/objects panel 307 a on pagesinclude, but are not limited to: importing from either a user's privatepage library or a public page library; deleting a page; inserting a newpage, inheriting all the attributes of the Master Page, and placing thenew page at any location in the Page List; editing the currentlyselected page, by working with an Edit Page Dialog Box. While editingall the functions of the Resource Inspector 309 are available, asdescribed subsequently, but are not applied to the actual page untilcompleting the editing process.

Examples of operations provided by of page/objects panel 307 a onobjects, which may be user interface (UI) objects, include but are notlimited to: changing the drawing order layer to: bring to the front,send to the back, bring to the front one layer, or send to the back onelayer; hiding (and then reshowing) selected objects to show UI objectsobstructed by other UI Objects, delete a selected UI Page Object, andediting the currently selected page, by working with a Edit Page DialogBox.

Object styles panel 307 b of layer inspector 307 displays all styles onthe Applications Page and permits operations to be performed on objects,and is similar to panel 307 a. Examples of operations provided by objectstyle panel 307 b include, but are not limited to: importing from eithera user's private object library or a public object library; inserting anew object style, which can be inherited from a currently selectedobject, or from a previously defined style object; and editing acurrently selected object style by working with an Edit Style DialogBox.

Style attributes can be assigned many attributes, including the look,and behavior of any object that inherits these objects. In addition,List Layout Styles can be created or changed as required. A layout stylecan define a unbounded set of Complex List Layouts, including but notlimited to: the number of lines per item in a list, the number of textand image elements and their location for each line for each item in thelast, the color and font for each text element, and the vertical andhorizontal offset for each image and text element.

Alerts Panel 307 c provides a way of providing alert pages, which canhave many of the attributes of Application Pages, but they are onlyactivated through an Event such as a user interaction, a network event,a timer event, or a system variable setting, and will be superimposedonto whatever is currently being displayed. Alert Pages all havetransparent backgrounds, and they function as a template overlay, andcan also have dynamic binding to real time content.

Resource inspector 309 is the primary panel for interactively workingwith UI objects that have been placed on the Canvas 305. When a UIobject is selected on Canvas 305, a user of authoring platform 110 mayassociate properties of the selected object by entering or selectingfrom resource inspector 309. In one embodiment, resource inspector 309includes five tab selections: Setting Tab 309 a, Events Tab 309 b,Animation Tab 309 c, Color Tab 309 d which includes a color palette forselecting object colors, and Bindings Tab 309 e.

Settings Tab 309 a provides a dialog box for the basic configuration ofthe selected object including, but not limited to, name, size, location,navigation and visual settings. Depending upon the type of object,numerous other attributes could be settable. As an example, the SettingTab for a Text Field may include dialog boxes to define the text fieldstring, define the object style, set the font name, size and effects,set an object name, frame style, frame width, text attributes (textfield, password field, numeric field, phone number, SMS number, URLrequest).

As an example of Setting Tab 309 a, FIG. 3B shows various selectionsincluding, but not limited to, setting 309 a 1 for the web page name,setting 309 a 2 for the page size, including selections for specificdevices 130, setting 309 a 3 indicating the width and height of theobject, and setting 309 a 4 to select whether background audio ispresent and to select an audio file.

FIG. 3C illustrates an embodiment of the Events Tab 309 b, whichincludes all end user interactions and time based operations. Theembodiment of Events Tab 309 b in FIG. 3C includes, for example andwithout limitation, an Events and Services 309 b 1, Advanced InteractiveSettings 309 b 2, Mouse State 309 b 3, Object Selected Audio Setting 309b 4, and Work with Child Objects and Mouse Overs button 309 b 5.

Events and Services 309 b 1 lists events and services that may beapplied to the selected objects. These include, but are not limited to,going to external web pages or other Applications pages, either as a newpage or by launching a new window, executing an Application orJavaScript method, pausing or exiting, placing a phone call or SMSmessage, with or without single or multiple Player download, show launchstrip, or go back to previous page. Examples of events and servicesinclude, but are not limited to those listed in Table II

TABLE II Events and Services Goto External Web Page replacingChoiceObject: Remove Icon from Current Frame Launch Strip Goto ExternalWeb Page Launched Goto a specific Internal Web Page in a New Window withAlert. “Backend Synchronization” Goto a specific Internal Web Page GotoWidget Object Goto the next Internal Web Page Generate Alert. “With aFire Event” Goto External Web Page replacing Send SMS Message fromLinked the Top Frame Text Field Execute JavaScript Method Toggle Alert.“Display OnFocus, Hide OffFocus” Pause/Resume Page Timeout Execute anApplication with Alert. “With a Fire Event” Execute an Application GotoLogical First Page Goto a specific Internal Web Page Generate Alert withBackend with setting starting slide Synchronization Exit ApplicationSend SMS Message with Share (Player Download) Exit Player PlacePhoneCall from linked Text Field with Share (Player Download) PlacePhoneCall from linked Text Send IM Alert from linked Text Field Field orText Area Text Field/Area: Send String on Set and Goto Starting PageFIRE ChoiceObject: Add Icon to Launch Populate Image Strip TextField/Area: Send String on Preferred Launch Strip FIRE or Numeric Keys

Advanced Interactive Settings 309 b 2 include Scroll Activation Enabled,Timeline Entry Suppressed, Enable Server Listener, Submit Form, ToggleChildren on FIRE, and Hide Non-related Children, Mouse State 309 b 3selections are Selected or Fire. When Mouse State Selected is chosen,Object Selected Audio Setting 309 b 4 of Inactive, Play Once, Loop, andother responses are presented. When Mouse State Fire is chosen, ObjectSelected Audio Setting 309 b 4 is replaced with FIRE Audi Setting, withappropriate choices presented.

When Work with Child Objects and Mouse Overs button 309 b 5 is selected,a Child Object Mode box pops up, allowing a user to create a childobject with shortcut to Menu bar 301 actions that may be used definechild objects.

FIG. 3D illustrates one embodiment of an Animation Tab 309 c, whichincludes all animations and timelines. The Color Tab includes all thepossible color attributes, which may vary significantly by object type.

Animation Tab 309 c includes settings involved in animation andtimelines that may be associated with objects. One embodiment ofAnimation Tab 309 c is shown, without limitation, in FIG. 3D, and isdescribed, in Rempell (“Rempell”).

A Color Tab 309 d includes a color palette for selecting object colors.

Bindings Tab 309 e is where web component operations are defined anddynamic binding settings are assigned. Thus, for example, a UI object isselected from canvas 305, and a web component may be selected andconfigured from the bindings tab. When the user's work is saved, bindinginformation is associated with the UI object that will appear on screen137.

FIG. 3E illustrates one embodiment of Bindings Tab and includes, withoutlimitation, the following portions: Web Component and Web ServicesOperations 309 e 1, Attributes Exposed list 309 e 2, panel 309 e 3 whichincludes dynamic binding of server-side data base values to attributesfor the selected object, Default Attribute Value 309 e 4, Database Name309 e 5, Table Name 309 e 6, Field Name 309 e 7, Channel Name 309 e 8,Channel Feed 309 e 9, Operation 309 e 10, Select Link 309 e 11, and LinkSet checkbox 309 e 12.

Web Component and Web Services Operations 309 e 1 includes webcomponents that may be added, edited or removed from a selected object.Since multiple web components can be added to the same object, anycombination of mash-ups of 3rd party web services is possible. When the“Add” button of Web Component and Web Services Operations 309 e 1 isselected, a pop-up menu 319, as shown in FIG. 3F, appears on publisherinterface 300. Pop-up menu 319 includes, but is not limited to, theoptions of: Select a Web Component 319 a; Select Results Page 319 b;Activation Options 319 c; Generate UI Objects 319 d; and Share WebComponent 319 e.

The Select a Web Component 319 a portion presents a list of webcomponents. As discussed herein, the web components are registered andare obtained from web component registry 220.

Select Results Page 319 b is used to have the input and output ondifferent pages—that is, when the Results page is different from Inputpage. The default selected results page is either the current page, or,if there are both inputs and outputs, it will be set provisionally tothe next page in the current page order, if one exists.

Activation Options 319 c include, if there are no Input UI Objects, achoice to either “Preload” the web component, similar to how dynamicbinding, or have the web component executed when the “Results” page isviewed by the consumer.

Generate UI Objects 319 c, if selected, will automatically generate theUI objects. If not selected, then the author will bind the Web ComponentInputs and Results to previously created UI Objects.

Share Web Component 319 e is available and will become selected underthe following conditions: 1) Web Component is Selected which already hasbeen used by the current Application; or 2) the current Input page isalso a “Result” page for that Web component. This permits the user ofdevice 130, after viewing the results, to extend the Web Componentallowing the user to make additional queries against the same WebComponent. Examples of this include, but are not limited to, interactivepanning and zooming for a Mapping Application, or additional and orrefined searches for a Search Application.

Dynamic Binding permits the binding of real time data, that could eitherreside in a 3rd party server-side data base, or in the databasemaintained by Feed Collector 1010 for aggregating live RSS feeds, asdescribed subsequently with reference to FIG. 10.

Referring again to FIG. 3E, Attributes Exposed list 309 e 2 are theattributes available for the selected object that can be defined in realtime through dynamic binding.

Panel 309 e 3 exposes all the fields and tables associated withregistered server-side data bases. In one embodiment, the user wouldselect an attribute from the “Attributes Exposed List” and then select adata base, table and field to define the real time binding process. Thefinal step is to define the record. If the Feed Collector data base isselected, for example, then the RSS “Channel Name” and the “ChannelFeed” drop down menus will be available for symbolically selected therecord. For other data bases the RSS “Channel Name” and the “ChannelFeed” drop down menus are replaced by a “Record ID” text field.

Default Attribute Value 309 e 4 indicates the currently defined valuefor the selected attribute. It will be overridden in real time based onthe dynamic linkage setting.

Database Name 309 e 5 indicates which server side data base is currentlyselected.

Table Name 309 e 6 indicates which table of the server side data base iscurrently selected.

Field Name 309 e 7, indicates which field form the selected table of theserver side data base is currently selected.

Channel Name 309 e 8 indicates a list of all the RSS feeds currentlysupported by the Feed Collector. This may be replaced by “Record ID” ifa data base other than the Feed Collector 1010 is selected.

Channel Feed 309 e 9 indicates the particular RSS feed for the selectedRSS Channel. Feed Collector 1010 may maintain multiple feeds for eachRSS channel.

Operation 309 e 10, as a default operation, replaces the defaultattribute value with the real time value. In other embodiments thisoperation could be append, add, subtract, multiply or divide.

Select Link 309 e 11 a button that, when pressed, creates the dynamicbinding. Touching the “Select Link” will cause the current data baseselections to begin the blink is some manner, and the “Select Link” willchange to “Create Link”. The user could still change the data base andattribute choices. Touching the “Create Link” will set the “Link Set”checkbox and the “Create Link” will be replaced by “Delete Link” if theuser wishes to subsequently remove the link. When the application issaved, the current active links are used to create the SPDL.

Link Set checkbox 309 e 12 indicates that a link is currently active.

An example of the design of a display is shown in FIGS. 4A and 4Baccording the system 100, where FIG. 4A shows publisher interface 300having a layout 410 on canvas 305, and FIG. 4B shows a device 130 havingthe resulting layout 420 on screen 137. Thus, for example, authoringplatform 110 is used to design layout 410. Authoring platform 110 thengenerates an Application and a Player specific to device 130 of FIG. 4B.The Application and Player are thus used by device 130 to produce layout420 on screen 137.

As illustrated in FIG. 4A, a user has placed the following on canvas 305to generate layout 410: text and background designs 411, a first textinput box 413, a second text input box 415, and a button 417. As anexample which is not meant to limit the scope of the present invention,layout 410 is screen prompts a user to enter a user name in box 413 anda password in box 415, and enter the information by clicking on button417.

In one embodiment, all UI objects are initially rendered as Java objectson canvas 305. When the Application is saved, the UI objects aretransformed into the PDL, as described subsequently.

Thus, for example, layout 410 may be produced by the user of authoringplatform 110 selecting and placing a first Text Field as box 413 thenusing the Resource Inspector 309 portion of interface 300 to define itsattributes.

Device User Experience

Systems 100 and 200 provide the ability for a very large number ofdifferent types of user experiences. Some of these are a direct resultof the ability of authoring platform 110 to bind UI objects tocomponents of web services. The following description is illustrative ofsome of the many types of experiences of using a device 130 as part ofsystem 100 or 200.

Device 130 may have a one or more of a very powerful and broad set ofextensible navigation objects, as well as object- and pointer-navigationoptions to make it easy to provide a small mobile device screen 137 withcontent and to navigate easily among page views, between Applications,or within objects in a single page view of an Application.

Navigation objects include various types of launch strips, variousintelligent and user-friendly text fields and scrolling text boxes,powerful graphical complex lists, as well as Desktop-level businessforms. In fact, every type of object can be used for navigation byassigning a navigation event to it. The authoring tool offers a list ofnavigation object templates, which then can be modified in numerousways.

Launch Strips and Graphical List Templates Launch Strips

Launch strips may be designed by the user of authoring platform 110 withalmost no restrictions. They can be stationary or appear on command fromany edge of the device, their size, style, audio feedback, andanimations can be freely defined to create highly compellingexperiences.

FIG. 5 shows a display 500 of launch strips which may be on displayedcanvas 305 or on screen 137 of device 130 having the proper Player andApplication. Display 501 includes a portal-type Launch Strip 501 and achannel-type Launch Strip 502, either one of which may be included fornavigating the Application.

Launch Strip 501 includes UI objects 501 a, 501 b, 501 c, 501 d, and 501e that that becomes visible from the left edge of the display, whenrequested. UI objects 501 a, 501 b, 501 c, 501 d, and 501 e are eachassociated, through resource inspector 309 with navigationalinstructions, including but not limited to navigating to a differentApplications Page, or requesting web content. When the ApplicationsPage, having been saved by authoring platform 110 and transferred todisplay 130, is executed on device 130, a user of the device may easilynavigate the Application.

Launch Strip 502 includes UI objects 502 b, 502 c, 502 d, and 503 e thatthat becomes visible from the bottom of the display, when requested. UIobjects 501 a, 501 b, 501 c, 501 d, and 501 e are each associated,through resource inspector 309 with navigational instructions, includingbut not limited to navigating to a different Applications Page, orrequesting web content. Launch Strip 502 also includes UI objects 502 aand 503 g, which include the graphic of arrows, and which provide accessto additional navigation objects (not shown) when selected by a user ofdevice 130. Launch strip 502 may also include sound effects for eachchannel when being selected, as well as popup bubble help.

Additional navigational features are illustrated in FIG. 6A as a displayof a Channel Selection List 601 a, in FIG. 6B as a display of a WidgetSelection List 601 b, and in FIG. 6C as display of a Phone List 601 c.Lists 601 a, 601 b, and 601 c may be displayed on canvas 305 or onscreen 137 of device 130 having the proper Player and Application. Asillustrated, graphical lists 601 a, 601 b, and 601 c may contain itemswith many possible text and image elements. Each element can be definedat authoring time and/or populated dynamically through one or more WebService 250 or API. Assignable Navigation Events. All objects, and/orall elements within an object, can be assigned navigation events thatcan be extended to registered web services or APIs. For example, aRolodex-type of navigation event can dynamically set the starting slideof the targeted page view (or the starting view of a targetedApplication).

In the embodiment of FIGS. 6A, 6B, and 6C, each list 601 a, 601 b, and601 c has several individual entries that are each linked to specificactions. Thus Channel Selection List 601 a shows three objects, eachdynamically linked to a web service (ESPN, SF 49ers, and Netflix) eachproviding a link to purchase or obtain items from the Internet. WidgetSelection List 601 b includes several objects presenting differentwidgets for selecting. Phone List 601 c includes a list phone numberobjects of names that, when selected by a user of device 130 cause thenumber to be dialed Entries in Phone List 601 c may be generatedautomatically from either the user's contact list that is resident onthe device, or though a dynamic link to any of user's chosen server-sidefacilities such as Microsoft Outlook, Google Mail, etc. In oneembodiment, Phone List 601 c may be generated automatically using a webcomponent assigned to the Application, which would automatically performthose functions.

In another embodiment, authoring platform 110 allows a navigationselection of objects with a Joy Stick and/or Cursor Keys in all 4directions. When within a complex object the navigation systemautomatically adopts to the navigation needs for that object. Forcoordinate sensitive objects such as geographical information services(GIS) and location-based services (LBS) or virtual tours a soft cursorappears. For Lists, scrolling text areas and chats, Launch strips, andslide shows the navigation process permits intuitive selection ofelements within the object. Scroll bars and elevators are optionallyavailable for feedback. If the device has a pointing mechanism thenscroll bars are active and simulate the desktop experience.

Personalization and Temporal Adoption

System 100 and 200 permit for the personalization of device 130 by avariety of means. Specifically, what is displayed on screen 137 maydepend on either adoption or customization. Adoption refers to theselection of choices, navigation options, etc. are based on user usagepatterns. Temporal adoption permits the skins, choices, layouts,content, widgets, etc. to be further influenced by location (for examplehome, work or traveling) and time of day (including season and day ofweek). Customization refers to user selectable skins, choices, layouts,dynamic content, widgets, etc. that are available either through acustomization on the phone or one that is on the desktop but dynamicallylinked to the user's other internet connected devices.

To support many personalization functions there must be a convenientmethod for maintaining, both within a user's session, and betweensessions, memory about various user choices and events. Both utilizing apersistent storage mechanism on the device, or a database for userprofiles on a server, may be employed.

FIG. 7 shows a display 700 of a mash-up which may be on displayed canvas305 or on screen 137 of device 130 having the proper Player andApplication. Display 700 includes several object 701 that have beendynamically bound, including an indication of time 701 a, an indicationof unread text messages 701 b, an RSS news feed 701 c (including 2 “ESPNTop Stories” 701 c 1 and 701 c 2), components 701 d from two WebServices—a weather report (“The Weather Channel”), and a traffic report701 e (“TRAFFIC.COM”).

In assembling the information of display 700, device 130 is aware of thetime and location of the device—in this example the display is for aworkday when a user wakes. Device 130 has been customized so that on awork day morning the user wishes to receive the displayed information.Thus in the morning, any messages received overnight would be flagged,the user's favorite RSS sports feeds would be visible, today's weatherforecast would be available, and the current traffic conditions betweenthe user's home and office would be graphically depicted. Userpersonalization settings may be maintained as persistent storage ondevice 130 when appropriate, or in a user profile which is maintainedand updated in real-time in a server-side data base.

Push Capable Systems

In another embodiment system 100 or 200 is a push-capable system. As anexample, of such systems, short codes may be applied to cereal boxes andbeverage containers, and SMS text fields can be applied to promotionalwebsites. In either case, a user of device 130 can text the short codeor text field to an SMS server, which then serves the appropriateApplication link back to device 130.

FIG. 8 is a schematic of an embodiment of a push enabled system 800.System 800 is generally similar to system 100 or 200. Device 130 isshown as part of a schematic of a push capable system 800 in FIG. 8.System 800 includes a website system 801 hosting a website 801, a server803 and a content server 805. System 801 is connected to servers 803and/or 805 through the Internet. Server 803 is generally similar toserver 120, servers 805 is generally similar to server 140.

In one embodiment, a user sets up a weekly SMS update from websitesystem 801. System 801 provides user information to server 803, which isan SMS server, when an update is ready for delivery. Server 803 providesdevice 130 with an SMS indication that the subscribed information isavailable and queries the user to see if they wish to receive theupdate. Website 801 also provides content server 805 with the content ofthe update. When a user of device 130 responds to the SMS query, theresponse is provided to content server 805, which provides device 130with updates including the subscribed content.

In an alternative embodiment of system 800, server 803 broadcasts alertsto one or more devices 130, such as a logical group of devices. The useris notified in real-time of the pending alert, and can view and interactwith the massage without interrupting the current Application.

FIG. 9 is a schematic of an alternative embodiment of a push enabledsystem 900. System 900 is generally similar to system 100, 200, or 800.In system 900 a user requests information using an SMS code, which isdelivered to device 130. System 900 includes a promotional code 901, athird-party server 903, and content server 805. Server 803 is connectedto servers 803 and/or 805 through the Internet, and is generally similarto server 120.

A promotional code 901 is provided to a user of device 130, for exampleand without limitation, on print media, such as on a cereal box. The useof device 130 sends the code server 903. Server 903 then notifies server805 to provide certain information to device 130. Server 805 thenprovides device 130 with the requested information.

Device Routines

Device routines 114 may include, but are not limited to: an authoringtool SDK for custom code development including full set of Java APIs tomake it easy to add extensions and functionality to mobile Applicationsand tie Applications to back-end databases through the content server140; an expanding set of web services 250 available through theauthoring tool SDK; a web services interface to SOAP/XML enabled webservices; and an RSS/Atom and RDF feed collector 1010 and contentgateway 1130.

Authoring Tool SDK for Custom Code Development Including Full Set ofJava APIs

In one embodiment, authoring platform 110 SDK is compatible for workingwith various integrated development environments (IDE) and popular plugins such as J2ME Polish. In one embodiment the SDK would be another plugin to these IDEs. A large and powerful set of APIs and interfaces arethus available through the SDK to permit the seamless extension of anyApplication to back end business logic, web services, etc. Theseinterfaces and APIs may also support listeners and player-side objectoperations.

There is a large set of listeners that expose both player-side eventsand dynamically linked server side data base events. Some examples ofplayer side events are: player-side time based event, a page entryevent, player-side user interactions and player-side object status.Examples of server-side data base events are when a particular set oflinked data base field values change, or some filed value exceeds acertain limit, etc.

A superset of all authoring tool functionality is available through APIsfor layer-side object operations. These include, but are not limited to:page view level APIs for inserting, replacing, and or modifying any pageobject; Object Level APIs for modifying any attribute of existingobjects, adding definitions to attributes, and adding, hiding orreplacing any object.

Authoring Tool SDK Available Web Services

The APIs permit, without limit, respond, with or without relying onback-end business logic, that is, logic that what an enterprise hasdeveloped for their business, to any player-side event or server-sidedynamically linked data-base, incorporating any open 3rd party webservice(s) into the response.

RSS/Atom and RDF Feed Conversion Web Service

FIG. 10 is a schematic of one embodiment a system 1000 having a feedcollector 1010. System 1000 is generally similar to system 100, 200,800, or 900. Feed collector 1010 is a server side component of system100 that collects RSS, ATOM and RDF format feeds from various sources1001 and aggregates them into a database 1022 for use by theApplications built using authoring platform 110.

Feed collector 1010 is a standard XML DOM data extraction process, andincludes Atom Populator Rule 1012, RSS Populator Rule 1013, RDFPopulator Rule 1014, and Custom Populator Rule 1016, DOM XML Parsers1011, 1015, and 1017, Feed Processed Data Writer 1018, Custom Rule BasedField Extraction 1019, Rule-based Field Extraction 1020, Channel DataController 1021, and Database 1022.

The feed collector is primarily driven by two sets of parameters: one isthe database schema (written as SQL DDL) which defines the tables in thedatabase, as well as parameters for each of the feeds to be examined.The other is the feed collection rules, written in XML, which can beused to customize the information that is extracted from the feeds. Eachof the feeds is collected at intervals specified by the feed parameterset in the SQL DDL.

Feed collector 1010 accepts information from ATOM, RDF or RSS feedsources 1001. Using a rules-based populator, any of these feeds can belogically parsed, with any type of data extraction methodology, eitherby using supplied rules, or by the author defining their own customextraction rule. The rules are used by the parser to parse from the feedsources, and the custom rule base field extraction replaces the defaultrules and assembles the parsed information into the database

In particular, Atom Populator Rule 1012, RSS Populator Rule 1013, RDFPopulator Rule 1014, Custom Populator Rule 1016, and DOM XML Parsers1011, 1015, and 1017 are parse information from the feeds 1001, and FeedProcessed Data Writer 1018, Custom Rule Based Field Extraction 1019,Rule-based Field Extraction 1020, and Channel Data Controller 1021,supply the content of the feeds in Database 1022, which is accessiblethrough content server 140.

FIG. 11 is a schematic of an embodiment of a system 1100 having a MobileContent Gateway 1130. System 1100 is generally similar to system 100,200, 800, 900, or 1000. System 1100 includes an SDK 1131, feed collector1010, database listener 1133, transaction server 1134, custom code 1135generated from the SDK, Java APIs, Web Services 1137, and PDL snippetscompacted objects 1139. System 1100 accepts input from Back End JavaCode Developer 1120 and SOAP XML from Web Services 1110, and providesdynamic content to server 140 and Players to devices 130.

In one embodiment authoring platform 110 produces a Server-side PDL(SPDL) at authoring time. The SPDL resides in server 120 and provides alogical link between the Application's UI attributes and dynamic contentin database 1022. When a user of device 130 requests dynamicinformation, server 120 uses the SPDL to determine the link required toaccess the requested content.

In another embodiment Web Services 1137 interface directly with 3rdparty Web Services 1110, using SOAP, REST, JAVA, JavaScript, or anyother interface for dynamically updating the attributes of theApplication's UI objects.

XSP Web Pages as a Web Service

In one embodiment, a PDL for a page is embedded within an HTML shell,forming one XSP page. The process of forming XSP includes compressingthe description of the page and then embedding the page within an HTMLshell.

In another embodiment, a PDL, which contains many individual pagedefinitions, is split into separate library objects on the server, sothat each page can to presented as a PDL as part of a Web Service.

Prior to compression the code has already been transformed so that thereare no dependencies on the original programming language (Java), and Thecode and data have been reduced by 4 to 10 times.

Compression has two distinct phases. The first takes advantage of howthe primitive representations had been assembled, while the secondutilizes standard LZ encoding.

The final result is an overall reduction of 40 to 100 times the originalsize as represented by Java serialized objects.

One embodiment for compacting data that may be used is described inRempell. In that patent the compressed data is described as being adatabase. The terminology used here is a PDL, that is the “internaldatabase” of Rempell is equivalent to the PDL of the presentApplication.

In Rempell, a process for compacting a “database” (that is, generating acompact PDL) is described, wherein data objects, including but notlimited to, multi media objects such as colors, fonts, images, soundclips, URLs, threads, and video, including multi level animation,transformation, and time line are compacted. As an extension to Rempellin all cases these objects are reduced and transformed to Boolean,integer and string arrays.

The compression technique involves storing data in the smallest arraysnecessary to compactly store web page information. The technique alsoincludes an advanced form of delta compression that reduces integers sothat they can be stored in a single byte, a as high water marks.

Thus, for example, the high water mark for different types of datacomprising specific web site settings are stored in a header record asBoolean and integer variables and URL and color objects. Data thatdefines web page, paragraph, text button, and image style and textbutton, image and paragraph high watermark settings can be stored inone-dimensional arrays as Boolean, integer and string variables and URL,font, image or thread objects at. The URL, color, font, image and threadobjects can also be created as required

Data that defines text button, image, paragraph, or other parent objectsand paragraph line high watermark settings can be stored intwo-dimensional arrays (by web page and by object number) as Boolean,integer, string, floating point variables and URLs. Again, the URL,color, font, image, audio clip, video clip, text area and thread objectscan also be created as required. Data that defines a paragraph line andparagraph line segment high watermarks can be stored inthree-dimensional arrays (by web page, by paragraph number, and by linenumber) as Boolean, integer or string variables. Again, the URL, coloror font objects can be created as required. Data that defines aparagraph line segment can be stored into four-dimensional arrays (byweb page, by paragraph number, by line number and by line numbersegment) as Boolean, integer or string variables or URL, color and fontobjects.

As a data field is added, changed or deleted, a determination is made aton whether a value for a given high watermark needs to be changed. Ifso, it is updated. As a specific method in the build engine is called, adetermination is made on whether a feature flag needs to be set. Forexample, if a particular JAVA method is called, which requires aninstance of a certain JAVA Class to be executed by the run time engine,then that JAVA Class is flagged, as well as any supporting methods,variables and/or object definitions.

In one implementation, the header record, the style record, the web pagerecord, and the object records, are carefully defined in a specificorder, written in that order, and explicitly cast by object type whenread by the run time engine. Exception handling can be implemented torecover from any errors. This helps assure that data integrity ismaintained throughout the build and run time processes.

Also described in Rempell is the “run generation process.” This isequivalent generating a Player in the present application. This processstarts when the build process detects that the user is finished definingthe web site (user has saved the web site and invokes the run generationprocess), and concludes with the actual uploading of all the necessaryweb site run time files to the user's server.

In one embodiment, the PDL includes a first record, a “Header” record,which contains can include the following information:

1: A file format version number, used for upgrading database in futurereleases.

2: The default screen resolution, in virtual pixels, for both the screenwidth and height. This is usually set to the web designer's screenresolution, unless overwritten by the user.

3: Whether the Application is a web site.

4: Virtual web page size settings. A calculation is performed by thebuild engine method, in order to calculate what the maximum web pagelength is, after reformatting all paragraphs on all internal web pages,based on the default screen resolution.

5: Web page and styles high watermarks.

6: The Websitename.

As new web pages or new objects are created by the user, or as text isadded to or deleted from a paragraph, or as new styles are created ordeleted, appropriate high watermarks are set, in order to show thecurrent number of each of these entities. Thus, the values for thenumber of active web pages and the number of text button, image,paragraph or other styles are written as high watermarks in the header.The high watermarks for the number of text button, image, paragraph orother objects that exist for each web page, the number of lines for eachparagraph object, and the number of line segments for each paragraphline are written within the body of the PDL, and used as settings foreach of the loops in the four-dimensional data structure. Because nostructural limits are set on the number of web pages, objects per webpage, styles, or paragraph size, these high watermarks greatly reducethe external database file size, and the time it takes for the run timeengine to process the data stored in its database.

The settings for all paragraph, text button and image styles are thenwritten as a style record based on their high watermark. This dataincludes Boolean and integer variables, and font and color objects,written as a one-dimensional array, based on the high watermark valuesfor the number of styles that exist.

The body of the PDL is then written. All Boolean values are writteninside a four-dimensional loop. The outside loop contains the Booleanvalues used to define web pages (i.e. a one-dimensional arraydefinition) as well as the high watermarks for the number of textbutton, image, paragraph or other objects per web page, with the loopset at the high watermark which defines the number of existing web pagesfor this web site structure. The second level consists of three or moretwo dimensional loops with the loops set to the high watermarks definingthe actual number of text button, image, and paragraph or other objectsthat appear on any given web page and contains the values used to defineweb page objects ((i.e. a two-dimensional array definition; web pagenumber by object number). Included within the loop for paragraph objectsare the high watermarks for the number of lines for each paragraphobject. The third loop is set by the high watermark defining the actualnumber of paragraph lines that for all paragraphs on any web page andcontains the values used to define paragraph lines (i.e. athree-dimensional array definition; web page number by object number byparagraph line.) Included within the loop for paragraph lines are thehigh watermarks for the number of line segments for each paragraph line.The inner most loop is set by the high watermarks defining the number ofline segments per paragraph line and contains the values used to defineparagraph line segments (i.e. a four-dimensional array definition; webpage number by object number by paragraph line by paragraph linesegment).

All integer values are written inside a four-dimensional loop. Theirfour loops are controlled by the same high watermark settings as usedfor the Boolean records, and they describe the same logical entities.

Multimedia objects are written inside a two-dimensional loop. Theyinclude URL, color, and font objects, and can include other types ofobjects. A URL object is the encoded form of a URL Address, used by aweb browser or a JAVA method to access files and web addresses. Allmultimedia objects must be serialized before they can be written. Thismeans that the objects are converted into a common external definitionformat that can be understood by the appropriate deserializationtechnique when they are read back in and cast into their original objectstructure. The outside loop contains web page related objects, and theinner loop contains image, text button, paragraph, etc. related URL,color, and font objects. The outer loop is defined by the web page highwatermark and the inner loops by the high watermarks for the actualnumber of text button, image, paragraph or other objects on a web page.

String records are written inside a four-dimensional loop. The outerloop may be empty. The second loop can include the string values fortext button objects, audio and video filenames, and audio and videochannel names. The third loop contains values for paragraph line relateddata, and the innermost loop contains the values for paragraph linesegment definitions. The string records are controlled by the same highwatermarks as those used for Boolean and integer records. String recordsare stored utilizing an appropriate field delimiter technology. In oneimplementation, a UTF encoding technology that is supported by JAVA isutilized.

Single and double floating-point, and long integer records are writteninside a two-dimensional loop. The outer loop may be empty. The innerloop contains mathematical values required for certain animations andimage processing algorithms. The single and double floating-point, andlong integer records are controlled by the same high watermarks as thoseused for Boolean and integer records.

In one embodiment, a versionizing program analyzes the feature flags,and only those variable definitions, defined in the “Main” object class,relating to the object classes and methods that will be executed at runtime, are extracted. All references to object classes that will becalled at run time are extracted, creating the source code for the runengine “Main” object class that is ready for compilation.

All external image, video and audio files are resolved. The externalreferences can be copied to designated directories, either on the user'slocal disk or file server. The file Pathnames can be changed to reflectthese new locations. During the installation of the build tools, thenecessary class libraries are either installed on the local system ormade available on the server where the build tools can be optionallylocated. The necessary environmental variables are set to permit normalaccess to the required class libraries.

The customized run engine and a library of the referenced run timeclasses are compiled and converted into byte code. Finally, the run timeengine for the web site is created. The required set of class objectsrequired at run time is flagged for inclusion into the CAB/JAR file.

Next, an HTML Shell File (HSF) is constructed. The first step of thisprocess is to determine whether the dynamic web page and object resizingis desired by testing the Application setting. If the Application was aweb page, and thus requiring dynamic web page and object resizing,virtual screen resolution settings are placed in an appropriate HTMLcompliant string. If the Application is a banner or other customizedApplication, the absolute values for the run time object (applet size)height and width are placed in an appropriate HTML compliant string asabsolute width and height values.

An analysis is made for the background definition for the first internalweb page. If a background pattern is defined, an appropriate HTMLcompliant string for setting the HTML “background” to the samebackground image is generated. If the first web page definition is acolor instead, then the RGB values from those colors are converted tohexadecimal and an appropriate HTML compliant String is generatedsetting the “bgcolor” to the required hexadecimal value. This processsynchronizes the web page background with the background that will bedrawn by the web browser when it first interprets the HSF.

Thereafter, a JAVA method generates HTML and JavaScript compliantstrings, that when executed by a web browser, generate additional setsof HTML and JavaScript compliant strings that are again executed by theweb browser. More specifically, if the Application required dynamic webpage and object resizing then JavaScript and HTML compliant strings aregenerated so that, when interpreted by the web browser at the time theHTML Shell File is initialized, the screen resolution sensing JAVAapplet (SRS) will be executed. JavaScript code is generated in order toenable JavaScript to SRS applet communication. In one implementation,the code is generated by performing the following functions:

-   -   1: Determine the current web browser type.    -   2: Load the SRS from either a JAR or CAB File, based on web        browser type.    -   3: Enter a timing loop, interrogating when the SRS is loaded.    -   4: When the SRS returns an “available” status, interrogate the        SRS, which will return the current screen and window's actual        height and width.    -   5: Convert the virtual screen resolution settings into        appropriate absolute screen

width and height values.

Strings defining additional JavaScript code are generated that performthe following steps at the time the HSF is initialized by the webbrowser:

-   -   1: Generate HTML compliant strings that set the run time        engine's applet size to the appropriate values.    -   2: Generate an HTML complaint string that contains a “param”        definition for linking the run time engine to the PDL.    -   3: Generate an HTML complaint string, dependent upon the type of        web browser, which causes the current web browser to load either        the JAR or the CAB File(s).    -   4: Generate JavaScript Code compliant strings that create and        dynamically write the applet size defining HTML strings        utilizing the JavaScript “document.write” function. This        dynamically created code causes the web browser to execute the        run time engine, in the correctly sized window, from the correct        JAR or CAB file, and linked to the external database.

The writing out the above-generated HTML and JavaScript compliantstrings creates the HSF. The necessary security policy permissions areasserted, and a “Websitename”.html file is created.

In one embodiment, the processes for creating the CAB and JAR Files isas follows. The image objects, if any, which were defined on the firstinternal web page are analyzed. If they are set to draw immediately uponthe loading of the first web page, then they are flagged for compressionand inclusion in the CAB and JAR Files. The feature flags are analyzedto determine which JAVA classes have been compiled. These class filesare flagged for compression and inclusion in the library CAB and JARFiles. Strings that are BAT compliant definitions are created that will,when executed in DOS, create compressed CAB and JAR Files. These CAB andJAR Files contain the compressed versions of all necessary JAVA classfiles, image files, the “Websitename”.class, customized run time enginefile, and the “Websitename”.dta database file. In one implementation ofthe invention, two BAT files are created. The first, when executed, willcreate a CAB/JAR file with the “Websitename”.dta database file and thecustomized “main” run time engine, excluding all the image and buttonobject animation, transformation, and image processing code. The secondBAT file, when executed, will create a CAB/JAR file with all the libraryof all the referenced image and button object animation, transformation,and image processing code.

The necessary security policy permissions for file creation are thenasserted, and “Websitename”.bat and “Websitenamelib”.bat files arewritten. The “Websitename”.bat and “Websitename”.bat files are thenexecuted under DOS, creating compressed “Websitename”.cab and“Websitenamelib”.cab files and compressed “Websitename” jar and“Websitenamelib” jar files. The HTML Shell File and the JAR and CABfiles are then, either as an automatic process, or manually, uploaded tothe user's web site. This completes the production of an XSP page thatmay be accessed through a web browser.

Displaying Content on a Device Decompression Management

Authoring platform 110 uses compaction to transform the code and data inan intelligent way while preserving all of the original classes, methodsand attributes. This requires both an intelligent server engine andclient (handset) Player, both of which fully understand what the datameans and how it will be used.

The compaction technology described above includes transformationalgorithms that deconstruct the logic and data into their most primitiverepresentations, and then reassembles them in a way that can beoptimally digested by further compression processing. This reassembledset of primitive representations defines the PDL of authoring platform110.

Prior to compression the code has already been transformed so that thereare no dependencies on the original programming language (Java). Thedata is then compressed by first taking advantage of how the primitiverepresentations had been assembled, and then by utilizing standard LZencoding. The final result is an overall reduction of 40 to 100 timesthe original size as represented by Java serialized objects.

The Player, when preparing a page view for execution, decompresses andthen regenerate the original objects, but this time in compliance withthe programming APIs of device 130. Specifically, device 130 operates oncompacted image pages, one at a time. The cache manager retrieves,decompresses, and reassembles the compacted page images into deviceobjects, which are then interpreted by device 130 for display on screen137.

Response Director

In one embodiment, system 100 includes a Response Director, whichdetermines a user's handset, fetches the correct Application fromdifferent databases, and delivers a respective highly compressedApplication in a PDL format over the air (OTA).

In one embodiment, the Response Director operates on a network connectedcomputer to provide the correct Player to a given device based on theinformation the device sent to it. As an example, this may occur when adevice user enters their phone number into some call-to-action web page.The response director is called and sends an SMS message to the device,which responds, beginning the recognition process.

FIG. 12 illustrates one embodiment of a system 1200 that includes aresponse director 210, a user agent database 1201, an IP addressdatabase 1203, and a file database 1205. System 1200 is generallysimilar to system 100, 200, 800, 900, 1000, or 1100.

Databases 1201, 1203, and 1205 may reside on server 120, 210, or anycomputer system in communication with response director 210. System1200, any mobile device can be serviced, and the most appropriateApplication for the device will be delivered to the device, based on thecharacteristics of the device.

User agent database 1201 includes user agent information regardingindividual devices 130 that are used to identify the operating system onthe device. IP address database 1203 identifies the carrier/operator ofeach device 130. File database 1205 includes data files that may operateon each device 130.

The following is an illustrative example of the operation of responsedirector 210. First, a device 1300 generates an SMS message, whichautomatically sends an http:// stream that includes handset informationand its phone number to response director 210. Response director 210then looks at a field in the http header (which includes the user agentand IP address) that identifies the web browser (i.e., the “UserAgent”). The User Agent prompts a database lookup in user agent database1201 which returns data including, but not limited to, make, model,attributes, MIDP 1.0 MIDP 2.0, WAP and distinguishes the same modelsfrom different countries. A lookup of the IP address in IP address 1203identifies the carrier/operator.

File database 1205 contains data types, which may include as jad1, jad2,html, wm1/wap2, or other data types, appropriate for each device 130. Alist of available Applications are returned to a decision tree, whichthen returns, to device 130, the Application that is appropriate for therespective device. For each file type, there is an attributes list(e.g., streaming video, embedded video, streaming audio, etc.) toprovide enough information to determine what to send to the handset.

Response director 210 generates or updates an html or jad filepopulating this text file with the necessary device and networkdependent parameters, including the Application dependent parameters,and then generate, for example, a CAB or JAD file which contains thenecessary Player for that device. For example, the jad file couldcontain the operator or device type or extended device-specificfunctions that the player would then become aware of.

If there is an Application that has a data type that device 130 cannotsupport, for example, video, response director 210 sends an alternativeApplication to the handset, for example one that has a slide showinstead. If the device cannot support a slide show, an Application mighthave text and images and display a message that indicates it does notsupport video.

Another powerful feature of response director 210 is its exposed APIfrom the decision tree that permits the overriding of the default outputof the decision tree by solution providers. These solution providers areoften licensees who want to further refine the fulfillment ofApplications and Players to specific devices beyond what the defaultalgorithms provide. Solution providers may be given a choice ofApplications and then can decide to use the defaults or force otherApplications.

Authoring platform 110 automatically scales Applications at publishingtime to various form factors to reduce the amount of fragmentation amongdevices, and the Response Director serves the appropriately scaledversion to the device. For example, a QVGA Application willautomatically scale to the QCIF form factor. This is important becauseone of the most visible forms of fragmentation resides in the variousform factors of wireless, and particularly mobile, devices, which rangefrom 128×128, 176×208, 240×260, 220×220, and many other customized sizesin between.

FIG. 13 is a schematic of an embodiment of a system 1300. System 1300 isgenerally similar to system 1200. System 1300 is an overview of theentire Player fulfillment process, starting with the generation ofplayers during the player build process.

System 1300 includes response director 210, a device characteristicsoperator and local database 1301, a player profile database 1303 and aplayer build process 1305, which may be authoring platform 110.

As an example of system 1300, when response director 210 receives an SMSmessage from device 130, the response director identifies the devicecharacteristics operator and locale from database 1301 and a Player URLfrom database 1303 and provides the appropriate Player to the device.

In another embodiment, Player P extend the power of response director210 by adapting the Application to the resources and limitations of anyparticular device. Some of these areas of adaptation include the speedof the device's microprocessor, the presence of device resources such ascameras and touch screens. Another area of adaptation is directed toheap, record store and file system memory constraints. In oneembodiment, the Player will automatically throttle down an animation tothe frame rate that the device can handle so that the best possible userexperience is preserved. Other extensions include device specificfacilities such as location awareness, advanced touch screeninteractions, push extensions, access to advanced phone facilities, andmany others

Memory Management

In one embodiment, Player P includes a logical page virtual memorymanager. This architecture requires no supporting hardware and worksefficiently with constrained devices. All page view images, which couldspan multiple Applications, are placed in a table as highly compactedand compressed code. A typical page view will range from 500 bytes up toabout 1,500 bytes. (See, for example, the Rempell patent) When rolledinto the heap and instantiated this code increases to the more typical50,000 up to 250,000 bytes. Additional alert pages may also be rolledinto the heap and superimposed on the current page view. Any changes toany page currently downloaded are placed in a highly compact changevector for each page, and rolled out when the page is discarded. Notethat whenever an Application is visited that had previously been placedin virtual memory the Server is interrogated to see if a more currentversion is available, and, if so, downloads it. This means thatApplication logic can be changed in real-time and the resultsimmediately available to mobile devices.

To operate efficiently with the bandwidth constraints of mobile devices,authoring platform 110 may also utilize anticipatory streaming andmulti-level caching. Anticipatory streaming includes multipleasynchronous threads and IO request queues. In this process, the currentApplication is scanned to determine if there is content that is likelyto be required in as-yet untouched page views. Anticipatory streamingalso looks for mapping Applications, where the user may zoom or pan nextso that map content is retrieved prior to the user requesting it. Formapping applications, anticipatory streaming downloads a map whose sizeis greater than the map portal size on the device and centered withinthe portal. Any pan operation will anticipatory stream a section of themap to extend the view in the direction of the pan while, as a lowerpriority, bring down the next and prior zoom levels for this newgeography. Zooming will always anticipatory stream the next zoom levelup and down.

Multi-level caching determines the handset's heap through an API, andalso looks at the record store to see how much memory is resident. Thiscontent is placed in record store and/or the file system, and may, ifthere is available heap, also place the content there as well.Multi-level caching permits the management of memory such that mobilesystems best use limited memory resources. Multi-level caching is amemory management system with results similar to embedding, without theoverhead of instantiating the content. In other words, with multi-levelcaching, handset users get an “embedded” performance without theembedded download. Note that when content is flagged as cacheable and isplaced in persistent storage, a digital rights management (DRM) solutionwill be used.

One embodiment of each of the methods described herein is in the form ofa computer program that executes on a processing system. Thus, as willbe appreciated by those skilled in the art, embodiments of the presentinvention may be embodied as a method, an apparatus such as a specialpurpose apparatus, an apparatus such as a data processing system, or acarrier medium, e.g., a computer program product. The carrier mediumcarries one or more computer readable code segments for controlling aprocessing system to implement a method. Accordingly, aspects of thepresent invention may take the form of a method, an entirely hardwareembodiment, an entirely software embodiment or an embodiment combiningsoftware and hardware aspects. Furthermore, the present invention maytake the form of carrier medium (e.g., a computer program product on acomputer-readable storage medium) carrying computer-readable programcode segments embodied in the medium. Any suitable computer readablemedium may be used including a magnetic storage device such as adiskette or a hard disk, or an optical storage device such as a CD-ROM.

It will be understood that the steps of methods discussed are performedin one embodiment by an appropriate processor (or processors) of aprocessing (i.e., computer) system executing instructions (codesegments) stored in storage. It will also be understood that theinvention is not limited to any particular implementation or programmingtechnique and that the invention may be implemented using anyappropriate techniques for implementing the functionality describedherein. The invention is not limited to any particular programminglanguage or operating system. It should thus be appreciated thatalthough the coding for programming devices has not be discussed indetail, the invention is not limited to a specific coding method.Furthermore, the invention is not limited to any one type of networkarchitecture and method of encapsulation, and thus may be utilized inconjunction with one or a combination of other networkarchitectures/protocols.

Reference throughout this specification to “one embodiment,” “anembodiment,” or “certain embodiments” means that a particular feature,structure or characteristic described in connection with the embodimentis included in at least one embodiment of the present invention. Thus,appearances of the phrases “in one embodiment,” “in an embodiment,” or“in certain embodiments” in various places throughout this specificationare not necessarily all referring to the same embodiment. Furthermore,the particular features, structures or characteristics may be combinedin any suitable manner, as would be apparent to one of ordinary skill inthe art from this disclosure, in one or more embodiments.

Throughout this specification, the term “comprising” shall be synonymouswith “including,” “containing,” or “characterized by,” is inclusive oropen-ended and does not exclude additional, unrecited elements or methodsteps. “Comprising” is a term of art which means that the named elementsare essential, but other elements may be added and still form aconstruct within the scope of the statement. “Comprising” leaves openfor the inclusion of unspecified ingredients even in major amounts.

Similarly, it should be appreciated that in the above description ofexemplary embodiments, various features of the invention are sometimesgrouped together in a single embodiment, figure, or description thereoffor the purpose of streamlining the disclosure and aiding in theunderstanding of one or more of the various inventive aspects. Thismethod of disclosure, however, is not to be interpreted as reflecting anintention that the claimed invention requires more features than areexpressly recited in each claim. Rather, as the following claimsreflect, inventive aspects lie in less than all features of a singleforegoing disclosed embodiment, and the invention may include any of thedifferent combinations embodied herein. Thus, the following claims arehereby expressly incorporated into this Mode(s) for Carrying Out theInvention, with each claim standing on its own as a separate embodimentof this invention.

Thus, while there has been described what is believed to be thepreferred embodiments of the invention, those skilled in the art willrecognize that other and further modifications may be made theretowithout departing from the spirit of the invention, and it is intendedto claim all such changes and modifications as fall within the scope ofthe invention. For example, any formulas given above are merelyrepresentative of procedures that may be used. Functionality may beadded or deleted from the block diagrams and operations may beinterchanged among functional blocks. Steps may be added or deleted tomethods described within the scope of the present invention.

1. A system for generating code to provide content on a display of adevice, said system comprising: computer memory storing a registry of:a) symbolic names required for evoking one or more web components eachrelated to a set of inputs and outputs of a web service obtainable overa network, where the symbolic names are character strings that do notcontain either a persistent address or pointer to an output valueaccessible to the web service, and b) the address of the web service; anauthoring tool configured to: define a user interface (UI) object forpresentation on the display, where said UI object corresponds to the webcomponent included in said registry selected from the group consistingof an input of the web service and an output of the web service, accesssaid computer memory to select the symbolic name corresponding to theweb component of the defined UI object, associate the selected symbolicname with the defined UI object, enable the activation of an analyticslistener of the defined UI object, produce an Application including thesymbolic name associated with the defined UI object and including anindication of the activation of the enabled analytics listener, whereinsaid Application is a device-independent code; and a Player, where saidPlayer is a device-dependent code; such that, when the Application andPlayer are provided to the device and executed on the device, and when auser of the device interacts with or provides one or more input valuesassociated with an input symbolic name to an input of defined UIobject, 1) the device provides the user provided one or more inputvalues and corresponding input symbolic name to the web service, 2) theweb service utilizes the input symbolic name and the user provided oneor more input values for generating one or more output values having anassociated output symbolic name, 3) said Player receives the outputsymbolic name and corresponding one or more output values and providesinstructions for a display of the device to present an output value inthe defined UI object, and 4) the device provides analytic content to aserver corresponding to the enabled analytics listener of the defined UIobject.
 2. The system of claim 1, where said registry includesdefinitions of input and output related to said web service.
 3. Thesystem of claim 1, where said web component is a text chat, a videochat, an image, a slideshow, a video, or an RSS feed.
 4. The system ofclaim 1, where said UI object is an input field for a chat.
 5. Thesystem of claim 1, where said UI object is an input field for a webservice.
 6. The system of claim 1, where said UI object is an inputfield usable to obtain said web component, where said input fieldincludes a text field, a scrolling text box, a check box, a dropdown-menu, a list menu, or a submit button.
 7. The system of claim 1,where said web component is an output of a web service, is the textprovided by one or more simultaneous chat sessions, is the video of avideo chat session, is a video, an image, a slideshow, an RSS display,or an advertisement.
 8. The system of claim 1, where said authoring toolis further configured to: define a phone field or list; and generatecode that, when executed on the device, allows a user to supply a phonenumber to said phone field or list.
 9. The system of claim 1, where saidauthoring tool is further configured to: define a SMS field or list; andgenerate code that, when executed on the device, allows a user to supplyan SMS address to said SMS field or list.
 10. The system of claim 1,where said code includes three or more codes, where one of said three ormore codes is device specific, and where two of said three or more codesis device independent.
 11. The system of claim 1, where said code isprovided over said network.
 12. A method of displaying content on adisplay of a device utilizing a registry of one or more web componentsrelated to inputs and outputs of a web service obtainable over anetwork, where each web component includes a plurality of symbolic namesof inputs and outputs associated with each web service, and where theregistry includes: a) symbolic names required for evoking one or moreweb components each related to a set of inputs and outputs of a webservice obtainable over a network, where the symbolic names arecharacter strings that do not contain either a persistent address orpointer to an output value accessible to the web service, and b) theaddress of the web service, and a Player, where said Player is adevice-dependent code, said method comprising: defining a user interface(UI) object for presentation on the display, where said UI objectcorresponds to a web component included in said registry selected fromthe group consisting of an input of the web service and an output of theweb service; selecting a symbolic name from said web componentcorresponding to the defined UI object; associating the selectedsymbolic name with the defined UI object; enabling the activation of ananalytics listener of the defined UI object; and producing anApplication including the symbolic name associated with the defined UIobject and including an indication of the activation of the enabledanalytics listener, where said Application is a device-dependent code,such that, when the Application and Player are provided to the deviceand executed on the device, and when a user of the device interacts withor provides one or more input values associated with an input symbolicname to an input of defined UI object, 1) the device provides the userprovided one or more input values and corresponding input symbolic nameto the web service, 2) the web service utilizes the input symbolic nameand the user provided one or more input values for generating one ormore output values having an associated output symbolic name, 3) saidPlayer receives the output symbolic name and corresponding one or moreoutput values and provides instructions for a display of the device topresent an output value in the defined UI object; and 4) the deviceprovides analytic content to a server corresponding to the enabledanalytics listener of the defined UI object.
 13. The method of claim 12,where said registry includes definitions of input and output related tosaid web service.
 14. The method of claim 12, where said web componentis a text chat, a video chat, an image, a slideshow, a video, or an RSSfeed.
 15. The method of claim 12, where said UI object is an input fieldfor a chat.
 16. The method of claim 12, where said UI object is an inputfield for a web service.
 17. The method of claim 12, where said UIobject is an input field usable to obtain said web component, where saidinput field includes a text field, a scrolling text box, a check box, adrop down-menu, a list menu, or a submit button.
 18. The method of claim12, where said web component is an output of a web service, is the textprovided by one or more simultaneous chat sessions, is the video of avideo chat session, is a video, an image, a slideshow, an RSS display,or an advertisement.
 19. The method of claim 12, further comprising:defining a phone field or list; and generating code that, when executedon the device, allows a user to supply a phone number to said phonefield or list.
 20. The method of claim 12, further comprising: defininga SMS field or list; and generating code that, when executed on thedevice, allows a user to supply an SMS address to said SMS field orlist.
 21. The method of claim 12, and such that said Player interpretsdynamically received, device independent values of the web componentdefined in the Application.
 22. The method of claim 12, furthercomprising: providing said Application and Player over said network.23-28. (canceled)
 29. The system of claim 1, where said analytic contentincludes the symbolic name of the UI object and information based on theUI object type.
 30. The system of claim 1, where said where saidanalytic content includes information related to one or more player-sideevents.
 31. The system of claim 30, where said player-side eventsinclude a player-side time based event, a page entry event, aplayer-side user interaction, or a player-side object status.
 32. Thesystem of claim 1, where said analytic content includes informationrelated to one or more dynamically linked server side data base events.33. The system of claim 32, where said server-side data base eventsinclude when a particular set of linked database field values changes,or when a filed value exceeds a certain limit.
 34. The method of claim12, where said analytic content includes the symbolic name of the UIobject and information based on the UI object type.
 35. The method ofclaim 12, where said analytic content includes information related toone or more player-side events.
 36. The method of claim 35, where saidplayer-side events include a player-side time based event, a page entryevent, a player-side user interaction, or a player-side object status.37. The method of claim 12, where said analytic content includesinformation related to one or more dynamically linked server-side database events.
 38. The method of claim 37, where said server-side database events include when a particular set of linked database fieldvalues changes, or when a filed value exceeds a certain limit.